有没有办法在使用Process.Start()从C#应用程序启动窗口后获取窗口句柄(IntPtr)?
即时通讯使用以下方法
Run Code Online (Sandbox Code Playgroud)[DllImport("kernel32.dll", SetLastError=true)] static extern int GetProcessId(IntPtr hWnd);
尝试获取正在运行的进程的processId,我唯一的信息是HWND.我的问题是它始终返回错误代码6,即ERROR_INVALID_HANDLE.我以为我可能会将参数更改为int类型,但也没有用.我无法枚举正在运行的进程,因为任何时候都可能有多个实例在运行.
谁能看出我做错了什么?
注意:该进程是从暴露给框架的自动化对象中生成的,只提供HWND属性.也许还有另一种方法来获取processID,因为我编写的代码首先负责运行它?
我的代码看起来与此类似......
AutomationApplication.Application extApp = new AutomationApplication.Application(); extApp.Run(); ...
您好我正在尝试使用下面的代码向浏览器发送密钥,新的Chrome窗口为我打开,但它不会将密钥发送到浏览器.
当我调试我发现铬过程没有任何标题名称我怎么能解决这个问题?
Process.Start("chrome.exe", "https://labs.sketchfab.com/sculptfab/");
System.Threading.Thread.Sleep(2000);
foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
if (p.ProcessName == "chrome" && p.MainWindowTitle == "SculptFab - SculptGL + Sketchfab" &&
p.MainWindowHandle != IntPtr.Zero)
{
System.Threading.Thread.Sleep(2000);
for (int i = 0; i < 50; i++)
{
KeyHandle.SetForeGround(p.MainWindowHandle);
SendKeys.Send("s");
System.Threading.Thread.Sleep(2000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面提到的页面中,当键盘上按下"S"时,它会缩小我想要的对象,使用我的C#代码实现这一点