私は1つのアプリケーション使用フックを構築しています。別のアプリケーションを開始したいのですが、アプリケーションを構築した後、アプリケーションは別のアプリケーションの自動化ウィンドウハンドルを取得し、windowhookを設定します。しかし、私はそれを行うことはできません。Plsは私を助けてください:( .私の英語のためのSr
変数 window は、すべてのアプリケーションを取得したときに hwnd であり、windowform が実行されています
private bool AddWnd(int hwnd, int lparam)
{
if (IsWindowVisible(hwnd))
{
StringBuilder sb = new StringBuilder(255);
string className = GetClassName((IntPtr)hwnd).ToString();
if (className.Length > 10)
{
string getSubStringClassName = className.Substring(0, 11);
if (getSubStringClassName.Equals("WindowsForm") && IsWindow(hwnd)!=0)
{
GetWindowText(hwnd, sb, sb.Capacity);
window = hwnd;
}
}
}
return true;
}
HookProc HookProcedure;
private const int WH_CBT = 5;
public void startHook()
{
if (hHook == 0)
{
HookProcedure = new HookProc(CbtHookProc);
int threadID = GetWindowThreadProcessId((IntPtr)window, out processHandle);
IntPtr hMod = System.Runtime.InteropServices.Marshal.GetHINSTANCE(typeof(Form1).Module);
hHook = SetWindowsHookEx(WH_CBT, HookProcedure, hMod, threadID);
if (hHook == 0)
{
MessageBox.Show("SetWindowsHookEx Failed");
return;
}
}
else
{
bool ret = UnhookWindowsHookEx(hHook);
//If the UnhookWindowsHookEx function fails.
if (ret == false)
{
MessageBox.Show("UnhookWindowsHookEx Failed");
return;
}
hHook = 0;
button1.Text = "Set Windows Hook";
}
}