C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 【VB2005】デバッグ時のFindWindowについて


(過去ログ 110 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■65239 / inTopicNo.1)  【VB2005】デバッグ時のFindWindowについて
  
□投稿者/ コンバート後に悩む人 (25回)-(2013/02/14(Thu) 18:42:31)

分類:[VB.NET/VB2005 以降] 

VB2005
.net framework sp2

VB2005で作成したA画面とB画面を同時にデバッグ実行した場合に
WinAPIのFindWindow関数でプロセス存在確認をしたところ
戻り値がゼロになるのですが、デバッグ実行時はハンドルが取得できないのでしょうか。

よろしくお願いします。

・B画面デバッグ実行中(フォーム起動してるのみ程度の画面)
・A画面から以下をステップ実行でhwndをみると、ゼロが返却されてしまう。

 hwnd = FindWindow(Nothing, "B画面")

引用返信 編集キー/
■65242 / inTopicNo.2)  Re[1]: 【VB2005】デバッグ時のFindWindowについて
□投稿者/ コンバート後に悩む人 (26回)-(2013/02/14(Thu) 20:44:35)
じゃんぬさんのサイトを参考に、以下のコードで実現はできたのですが、
実行時、デバッグ実行時にFindWindowだと取得できる場合、できない場合があるようですが
こういう仕様なのでしょうか。
お分かりになる方、おられましたらよろしくお願いします。

' 実行中のすべてのプロセスを取得する
Dim hProcesses As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
Dim stPrompt As String = String.Empty

' 取得できたプロセスからプロセス名を取得する
For Each hProcess As System.Diagnostics.Process In hProcesses
If Strings.InStr(1, hProcess.ProcessName, strProsessName) > 0 Then
getFindWindow = hProcess.Handle
Exit For
End If

Next hProcess


引用返信 編集キー/
■65245 / inTopicNo.3)  Re[1]: 【VB2005】デバッグ時のFindWindowについて
□投稿者/ 魔界の仮面弁士 (156回)-(2013/02/15(Fri) 02:13:18)
No65239 (コンバート後に悩む人 さん) に返信
> ・B画面デバッグ実行中(フォーム起動してるのみ程度の画面)
> ・A画面から以下をステップ実行でhwndをみると、ゼロが返却されてしまう。
>
> hwnd = FindWindow(Nothing, "B画面")

試していませんが、Visual Studio ホストプロセスを無効化してみてはどうでしょう。
もしかしたら、*.vshost.exe が何か邪魔をしてしまうのかも。
http://www.atmarkit.co.jp/fdotnet/dotnettips/410vshost/vshost.html
http://bbs.wankuma.com/index.cgi?mode=al2&namber=62203&KLOG=104
引用返信 編集キー/
■65251 / inTopicNo.4)  Re[2]: 【VB2005】デバッグ時のFindWindowについて
□投稿者/ コンバート後に悩む人 (29回)-(2013/02/15(Fri) 09:48:10)
No65245 (魔界の仮面弁士 さん) に返信
> 試していませんが、Visual Studio ホストプロセスを無効化してみてはどうでしょう。
> もしかしたら、*.vshost.exe が何か邪魔をしてしまうのかも。
> http://www.atmarkit.co.jp/fdotnet/dotnettips/410vshost/vshost.html
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=62203&KLOG=104

言葉足らずでしたすみません。上記のことは試してみました。

フォームにボタンを配置し、FindWindowを実行するだけのプログラムを作成し
もう一方のフォームは何も配置せずにホストプロセスを無効化のみ
プロジェクト作成時からのデフォルト設定を変えた状態で実行しました。

そのときのタスクマネージャは、
WindowsApplication1.exe
WindowsApplication2.exe
と見えていますが、FindWindowを実行するとゼロが返ってくる状況です。

ホストプロセスを無効化すると
WindowsApplication1.vshost.exe
WindowsApplication2.vshost.exe
とタスクマネージャには見えていますが、実行結果は同じです。

※FindWindowの宣言はSendMessageのスレッドと同じ宣言しています。

dim hwnd as IntPtr
hwnd = FindWindow(Nothing, "WindowsApplication2")


引用返信 編集キー/
■65260 / inTopicNo.5)  Re[3]: 【VB2005】デバッグ時のFindWindowについて
□投稿者/ コンバート後に悩む人 (31回)-(2013/02/15(Fri) 13:27:18)
FindWindowに渡すべき値は、EXE名だとてっきり思っていましたが、
フォーム名を渡すのですね。(迂闊でした・・・)

dim hwnd as IntPtr
hwnd = FindWindow(Nothing, "フォーム名")

お騒がせしました。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -