通过句柄查找windoex c#
Findwindowex by handle c#
我已经为此苦苦挣扎了很长一段时间,但无法得到我理解的任何答案。我是 c# 新手。
所以我要启动一个应用程序(具体来说是 Accpac),然后我需要通过 sendkeys/sendmessage 将用户名发送到 child window。我有 childwindow 的句柄,但我无法让它工作:IntPtr.(00020380),我收到错误“需要标识符”
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Windows.Forms;
using System.Threading;
namespace myNamespace
{
class StartAccpac
{
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public static void Main3()
{
//START ACCPAC
//Process.Start("C:\Programs\Accpac\runtime\accpac.exe");
IntPtr hwnd = IntPtr.Zero;
IntPtr hwndChild = IntPtr.Zero;
//Get a MAIN HANDLE
hwnd = FindWindow(null, "Open Company");
hwndChild = FindWindowEx(hwnd, IntPtr.(00020380), null, null); <---- ERROR
}
}
}
你的问题在这里:
IntPtr.(00020380)
你需要做的是这样的:
new IntPtr(00020380)
但是我怀疑,是八位数字并且查看您的屏幕截图这是一个十六进制数字,因此您可能还需要考虑:
new IntPtr(0x00020380)
试一试,看看会发生什么。
我已经为此苦苦挣扎了很长一段时间,但无法得到我理解的任何答案。我是 c# 新手。
所以我要启动一个应用程序(具体来说是 Accpac),然后我需要通过 sendkeys/sendmessage 将用户名发送到 child window。我有 childwindow 的句柄,但我无法让它工作:IntPtr.(00020380),我收到错误“需要标识符”
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Windows.Forms;
using System.Threading;
namespace myNamespace
{
class StartAccpac
{
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public static void Main3()
{
//START ACCPAC
//Process.Start("C:\Programs\Accpac\runtime\accpac.exe");
IntPtr hwnd = IntPtr.Zero;
IntPtr hwndChild = IntPtr.Zero;
//Get a MAIN HANDLE
hwnd = FindWindow(null, "Open Company");
hwndChild = FindWindowEx(hwnd, IntPtr.(00020380), null, null); <---- ERROR
}
}
}
你的问题在这里:
IntPtr.(00020380)
你需要做的是这样的:
new IntPtr(00020380)
但是我怀疑,是八位数字并且查看您的屏幕截图这是一个十六进制数字,因此您可能还需要考虑:
new IntPtr(0x00020380)
试一试,看看会发生什么。