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

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

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

Re[2]: FindWindowのクラス名とウィンドウ名の取得について


(過去ログ 33 を表示中)

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

■16433 / inTopicNo.1)  FindWindowのクラス名とウィンドウ名の取得について
  
□投稿者/ mari (3回)-(2008/04/05(Sat) 19:20:46)

分類:[.NET 全般] 

C#でテキスト入力またはリストボックスなどからプロセス名を入力、選択でFindWindowのクラス名とウィンドウ名を取得し
FindWindow("", "");の""の中に入れるにはどうすればいいですか?
現時点ではspy++をつかって調べて直接FindWindow("", "");の""の中にクラス名とウィンドウ名をいれています。
でも起動させたいプログラムは毎回起動毎にクラス名がかわるのでどうしょうかなと・・・
ソースコード
メモ帳の場合
[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

private void button1_Click(object sender, EventArgs e)
{

IntPtr Handle = FindWindow("Notepad", "無題 - メモ帳"); //lpszClassName//lpszWindowName

if (Handle == IntPtr.Zero)
{
MessageBox.Show("Calculator is not running.");
return;
}

SetForegroundWindow(Handle);
SendKeys.SendWait("111");
SendKeys.SendWait("*");
SendKeys.SendWait("11");
SendKeys.SendWait("=");
}
}
}

引用返信 編集キー/
■16436 / inTopicNo.2)  Re[1]: FindWindowのクラス名とウィンドウ名の取得について
□投稿者/ Hongliang (261回)-(2008/04/05(Sat) 19:47:06)
Hongliang さんの Web サイト
Process.GetProcessesByName で Process オブジェクト(の配列)取得して MainWindowHandle プロパティ使えば良いんじゃないですか。
引用返信 編集キー/
■16438 / inTopicNo.3)  Re[2]: FindWindowのクラス名とウィンドウ名の取得について
□投稿者/ mari (5回)-(2008/04/05(Sat) 21:06:26)
No16436 (Hongliang さん) に返信
> Process.GetProcessesByName で Process オブジェクト(の配列)取得して MainWindowHandle プロパティ使えば良いんじゃないですか。

以下のようにソースコードを変更&削除したらできました。

[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

private void button1_Click(object sender, EventArgs e)
{
string ProcessName = "notepad";
Process[] allProcesses = Process.GetProcessesByName(ProcessName);

foreach (Process oneProcess in allProcesses)
{

richTextBox1.Text = ("メインウィンドウハンドル" + oneProcess.MainWindowHandle);

IntPtr Handle = (oneProcess.MainWindowHandle);

if (Handle == IntPtr.Zero)
{
MessageBox.Show("Calculator is not running.");
return;
}

SetForegroundWindow(Handle);
SendKeys.SendWait("111");
SendKeys.SendWait("*");
SendKeys.SendWait("11");
SendKeys.SendWait("=");
}
}

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -