Skip to content

После detach/attach не работают некоторый функции winapi #1878

Description

@Maximus5

Originally reported on Google Code with ID 1879

Задача: получить PID процесса, которому принадлежит foreground-окно.
Получаю хэндл окна через GetForegroundWindow, и передаю в GetWindowThreadProcessId.
Однако в некоторых случаях вызов завершается ошибкой "Invalid window handle."

Происходит это в случае если из конему запустить фар, сделать deattach, и снова attach.

Ниже lua-скрипт для воспроизведения:

local ffi = require"ffi"
local C = ffi.C
ffi.cdef[[
//https://msdn.microsoft.com/library/ms633505
HWND GetForegroundWindow(void);
//https://msdn.microsoft.com/library/ms633522
DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId);
]]
local hWnd = C.GetForegroundWindow()
local lpdwProcessId = ffi.new("DWORD[1]",1)
if 0==C.GetWindowThreadProcessId(hWnd,lpdwProcessId) then
  far.Message("","",nil,"we")
else
  far.Message(lpdwProcessId[0])
end

Хотелось бы понять в чём ошибка.

Reported by anton.sinitsin on 2015-01-22 19:21:32

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions