mfc-ml

2004年11月

29

[mfc 50164] メニュー表示中だけスレッドをサスペンドさせたい

はじめまして。中山と申します。

現在、タスクトレイに入るタイプの常駐ソフトを作っています。
この常駐ソフトは別スレッドを起動して常に監視を行うソフトです。
開発環境は WinXP、VC++.NET2003です。MFCは使用していません。

タスクトレイに表示されているアイコンをクリックしたときにポップアップメニュー
を表示させますが、そのメニューが表示されている時だけスレッドをサスペンド
させたいと考えています。

サスペンドさせるときは「TrackPopupMenu」でポップアップメニューを表示する
直前でスレッドを止めれば良いのですが、メニュー以外の場所がクリックされて
メニューが消えるタイミングを捉えることが出来ず、スレッドを再開させること
が出来ません。

メニューが消えるタイミングを捉える方法をご教示頂きたくお願い致します。
また、上記のような目的を達成するために別の方法がありましたら、その方法に
ついてもご教示頂ければ有難く思います。

宜しくお願い致します。

-- 
中山 剛史 <t...@nifty.com>
29

[mfc 50163] RE: 【質問】オートメーションサーバでの複数インスタンスの生成方法

 渋木です。

> 別々のProgIDでCreateProcessを行った場合でも,必ず新しくインスタンスを生成
するような設定
> をすることは可能でしょうか?

 技術的に可能か不可能かということなら可能っぽい気がしますが、かなり困難だと
思います。
 少なくとも MFC の助力は得られないものと考えた方がいいです。

--
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#

# Visual Studio2005 の全エディションに UnitTest 機能を!投票募集中↓
#
http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackId=F
DBK17344
29

[mfc 50162] 【質問】オートメーションサーバでの複数インスタンスの生成方法

はじめまして,
現在一つのProgIDを持つオートメーションサーバとして作成された、MDIのアプリケーション
(TestApp.exe)を改造し,複数のProgID(TestApp.1,TestApp.2,TestApp.3)を持たせ,ProgID毎
に別々のインスタンスを生成し、それぞれが独立して動作する機能を追加したいと考えております。

同一のProgIDでCreateObjectをすると,別々の
インスタンスが生成されるようには出来たのですが,別々のProgID(TestApp.1,TestApp.2,TestApp.3)
を同時にCreateObjectした場合には,一つのインスタンスしか生成さずに困っています。 

(プロジェクトにはIMPLEMENT_OLECREATE2をコピーしてきて、それを使用しています。) 


別々のProgIDでCreateProcessを行った場合でも,必ず新しくインスタンスを生成するような設定
をすることは可能でしょうか?
また、ダイアログやSDIなら実現できるようであれば、そちらに変更することも考えています。

開発環境 Visual Studio.NET 2003
言語     VisualC++
OS       Windows XP

よろしくお願いいたします。
28

[mfc 50161] Re:プリンタの削除

まつもとです。

# DeletePrinter は使ったこと無いので、ヘルプを見ただけですが

In "[mfc 50158] Re: プリンタの削除"
tgon wrote:
> とーちゃんです。

> @narさん、早速の回答ありがとうございます。

> DeletePrinterをMSDNでしらべ、試してみました。

> 処理の流れとしては
> EnumPrinters でプリンタの一覧を取得
> OpenPrinter で取得したプリンタを開く
> DeletePrinter で削除
> という流れになりました。

> ところが、OpenPrinterまでは成功するのですが、
> DeletePrinterが失敗します。
> GetLastErrorを使ってエラーの内容を見ると
> 「アクセスが拒否されました」
> とでてきます。

> これは2000でもXPでも共通でした。もちろん
> プリンタは使用していません。
> 何故なんでしょう?


OpenPrinter の第3引数は何を指定してますか?
たぶん PRINTER_DEFAULTS 構造体の DesiredAccess メンバに 
PRINTER_ACCESS_ADMINISTER か PRINTER_ALL_ACCESS を指定しなければいけない
んじゃないでしょうか。


---
松本 弘之
27

[mfc 50160] Re: [mfc 50159] Re: プリンタの削除 #觔茶

高田です。

> 「アクセスが拒否されました」と出て思いつくのは、
> 管理者権限でやっているかどうかです。
> 一般のユーザでは、消せなかったと思いますが…

 どの環境でもAdministratorでログインして実行しました。
 そのまま手動で削除もやってみましたが、こちらは問題なく
 削除できます。

 ひとつ気になっているのは、削除しようとするプリンタは
 いずれもその時点で接続されていないことです。
 実際に行うのはほとんどネットワーク上のプリンタなので、
 常に電源が入っているとは限りません。
 もし、これが理由であるとするなら、DeletePrinterの前に
 OpenPrinterがエラーを起こすと思うのですが。。。
記事検索
Amazon.co.jp
  • ライブドアブログ