DOBON.NET DOBON.NETプログラミング掲示板過去ログ

64bitでの動作

  • 題名: 64bitでの動作
  • 著者: キャンディ
  • 日時: 2010/02/06 0:38:43
  • ID: 26393
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[XP、vista 64bit VS2008 C# Framework3.5]
分類:[.NET]

たびたびすみません。
64bit(OS)での動作ができるように・・・・との調査で、
mdbのODBC接続を64bitモードでは不可能だったため、
ターゲットをx86に固定にして作成したところ、Xp 64bitで動作することを
確認したのですが・・・・・・・
1点だけ・・・・・
スクリーンセーバーのチェックを行っているのですが、ターゲットを32ビットでexeを作成するとスクリーンセーバーが検出できません。
スクリーンセーバーは64bitで動いているからでしょうか。
これを検出する方法は何かいい手段はあるでしょうか。。。。
64bitではプロセスチェックが違うのでしょうか。。。。

以下のロジックで検出しています
リモート接続するとsystemの出すスクリーンセーバーが稼動するため
スクリーンセーバーのユーザが自分のものを検出しています。
XP 32bitではこれでうまくいっています。
良い方法があればご教授願います

ManagementScope scope = new ManagementScope("root\\CIMV2");
scope.Connect();
ObjectQuery query = new ObjectQuery(@"SELECT * FROM Win32_Process");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection col = searcher.Get();
foreach (ManagementObject o in col)
{
try
{
string name = o["Name"].ToString();
if (strExe.ToLower() == name.ToLower())
{
Object[] UserInfo = new object[2];
o.InvokeMethod("GetOwner", UserInfo);
strUser = (string)UserInfo[0];
if (Environment.UserName.ToLower() == strUser.ToLower())
{
return true;
}
}
}
catch
{
continue;
}
}
  • 題名: Re[1]: 64bitでの動作
  • 著者: オショウ
  • 日時: 2010/02/07 16:28:01
  • ID: 26394
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No26393に返信(キャンディさんの記事)
> スクリーンセーバーのチェックを行っているのですが、ターゲットを32ビットでexeを作成するとスクリーンセーバーが検出できません。
> スクリーンセーバーは64bitで動いているからでしょうか。
> これを検出する方法は何かいい手段はあるでしょうか。。。。
> 64bitではプロセスチェックが違うのでしょうか。。。。

  それはOS的に当然な仕様です。
  32ビットから上位の64ビット環境の情報を得るのは、権限的に
  できない場合もあるかと。

  ただし、スクリーンセーバー起動時には、
  WM_SYSCOMMAND メッセージで、wParam == SC_SCREENSAVE を取得
  できれば、検出が可能かと思います。

  お試し下さい。

以上。

DOBON.NET | プログラミング道 | プログラミング掲示板