Я пытаюсь сделать что-то вроде вопроса, заданного в этом сообщении в win10 с C# SendInput to minimized window while you're working on other windows.'GetProcessIdOfThread' всегда возвращает ноль
я последовал за лучший ответ, чтобы сделать, и я считаю, что не работает, как «GetProcessIdOfThread» всегда возвращает 0.
Вот код:
public MainWindow()
{
InitializeComponent();
IntPtr NotepadHandle = FindWindow("Notepad", "Untitled - Notepad");
if (NotepadHandle == IntPtr.Zero)
{
MessageBox.Show("Notepad is not running.");
return;
}
uint noteid = GetProcessIdOfThread(NotepadHandle);
uint selfid = GetCurrentThreadId();
bool attach = AttachThreadInput(selfid, noteid, true);
if (attach == false)
{
MessageBox.Show("attach fail");
return;
}
}
ли я понял что-нибудь? Спасибо!
Если функция завершается успешно, возвращаемое значение является идентификатором процесса процесса, связанного с указанным потоком. Если функция не работает, возвращаемое значение равно нулю. Чтобы получить расширенную информацию об ошибке, вызовите 'GetLastError'. – Marusyk
Но прямо не вызывайте 'GetLastError' - используйте [' Marshal.GetLastWin32Error'] (https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.getlastwin32error (v = vs. 100) .aspx) и прочитайте там документацию для других требований. –