110,534
社区成员
发帖
与我相关
我的任务
分享
PostMessage(hWnd1, WM_LBUTTONUP, (IntPtr)0, null);
IntPtr hWnd7 = IntPtr.Zero;
for(int i = 0; hWnd7== IntPtr.Zero && i< 10; i++)
{
Thread.Sleep(200);
hWnd7 = FindWindow(null, "提示");
}
或者用
IntPtr lpdwResult;
//等等消息处理或超时2秒
var result = SendMessageTimeout(hWnd1, WM_LBUTTONUP, IntPtr.Zero, IntPtr.Zero,
0x0001 | 0x0002, //SMTO_BLOCK(等待返回) | SMTO_ABORTIFHUNG (若目标窗口无响应则立即返回)
2000,
out lpdwResult;)
if(result != 0)
{
IntPtr hWnd7 = FindWindow(null, "提示");
}
[DllImport("user32.dll", SetLastError = true)] //发送消息后直到目标窗口处理完成或者超时后返回
public static extern int SendMessageTimeout(IntPtr hWnd, uint WM_CHAR, IntPtr wParam, IntPtr lParam, uint fuFlags, int uTimeout, out IntPtr lpdwResult);
private void button1_Click(object sender, EventArgs e)
{
//这里添加你执行弹出对话框的代码
//×××××××
time1.Start();//抓取句柄
}
private void timer1_Tick(object sender, EventArgs e)
{
IntPtr hWnd=FindWindow(null,"***");//你的句柄?
if(hWnd!=IntPtr.Zero)
{
IntPtr hWnd1 = FindWindowEx(hWnd, IntPtr.Zero, null, "查找");
SendMessage(hWnd1, WM_LBUTTONDOWN, (IntPtr)0, null);
SendMessage(hWnd1, WM_LBUTTONUP, (IntPtr)0, null);
}
IntPtr hWnd7 = FindWindow(null, "提示");
if (hWnd7!=IntPtr.Zero)
{
IntPtr hWnd8 = FindWindowEx(hWnd7, IntPtr.Zero, null, "是(&Y)");
SendMessage(hWnd8, WM_LBUTTONDOWN, (IntPtr)0, null);
SendMessage(hWnd8, WM_LBUTTONUP, (IntPtr)0, null);
timer1.Stop();
}
}