我需要使用win32Api通过适配器单击Windows窗体应用程序按钮。
我已使用此代码在Windows窗体屏幕上找到了按钮
childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intbtnx, intbtny));
现在我需要自动单击此按钮。我不确定该怎么做。请需要帮助。
到目前为止,我已经写了这篇文章,但这仅获取了我需要单击它的按钮。
childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intPwdx, intPwdy));
需要单击childHwnd中可用的按钮
答案 0 :(得分:1)
您可以为此使用$jsonFile = fopen('JSONLogs/' . $generatedName, "w");
$handle = @fopen($PATHTOLOG, "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
$pattern = '/^\w+\s+\d+\s('. preg_quote($SelectedTime) .':\d+.\d+).\d+.\d+\s(.+)/im';
if (preg_match_all($pattern, $buffer, $matches, PREG_SET_ORDER)) {
fwrite($jsonFile, json_encode($matches, JSON_PRETTY_PRINT));
}
else {
}
}
//var_dump($decodeData);
}
fclose($handle);
fclose($jsonFile);
API
SendMessage
我应该注意,您不会看到按钮的点击动画,只有当您实际单击它时才会出现。
但是,它应该从点击事件中执行代码
编辑
OP在注释中要求将[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
private const uint BM_CLICK = 0x00F5;
SendMessage(childHwnd, BM_CLICK, 0, 0);
延迟5秒,而不冻结应用程序。
一个简单的解决方案是
SendMessage
中在表单上放置一个Toolbox
组件。
将其属性Timer
设置为Interval
将其属性5000
设置为true
双击事件Enabled
并在其中写入此代码
Tick