2017-12-01 9 views
-1

어떻게 델파이 10.2에서 GetWindowThreadProcessId를 호출 할 수 있습니까?어떻게 Delphi 10.2에서 GetWindowThreadProcessId를 호출 할 수 있습니까?

Windows API function입니다.

델파이 7에서이 주제를 다루는 old question이 발견되었습니다. 델파이 7 이후로 변경 사항이 있는지 묻고 싶습니다. (실제 버전 Delphi 10.2)

oleacc.dll을 포함하는 대신 winapi에서 Delphi 함수를 호출하는 것을 선호합니다.

+0

TApplication.IsKeyMsg에서 사용되며 도쿄도의 Windows에서 – FredS

+0

@FredS로 선언되었으므로 Delphi 7에서와 같을 수 있습니다. 연결된 질문은 다른 기능입니다. – Victoria

+0

@ 빅토리아, 하나의 질문이 두 개 있습니다. – FredS

답변

0

여기에는 특별한 것이 없습니다. GetWindowThreadProcessId을 선언하는 Winapi.Windows 유닛을 사용해야하며이 함수를 호출 할 수 있습니다. 그게 전부 야.

제공하는 링크는 다른 기능 (GetProcessHandleFromHwnd)을 나타냅니다. 이것은 GetWindowThreadProcessId을 호출하여 프로세스 ID를 얻은 다음 OpenProcess을 호출하여 프로세스 핸들을 얻는 것과 같은 편리한 함수입니다.

그러나이 편리한 방법으로는 액세스 권한을 지정할 수 없습니다. 프로세스 핸들은 PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | SYNCHRONIZE으로 요청됩니다. 그것들이 당신이 필요로하지 않는 것이라면이 기능은 당신에게 쓸모가 없습니다. 추가 제한 사항은 대상 프로세스가 호출 프로세스와 동일한 사용자로 실행중인 경우에만 편의 함수가 성공한다는 것입니다. 따라서 GetWindowThreadProcessId으로 전화 한 다음 OpenProcess으로 전화하여 필요한 액세스 권한을 지정하는 것이 좋습니다.