2015-06-06 533 views
0

我在java中使用jna.extra.User32Extra庫來查找窗口並更改windowdisplayaffinity值。 但它返回「ACCESS DENIED」錯誤代碼。SetWindowDisplayAffinity失敗,錯誤「Access denied」

HWND top= target.findWindow("WindowTitle"); 
System.err.println(User32Extra.INSTANCE.SetWindowDisplayAffinity(top, 0)); 
System.err.println(Native.getLastError()); 

以下代碼給出「false」和錯誤代碼「5」(ACCESS DENIED)。

我是否需要額外的權限?這個錯誤的原因是什麼?

+1

請檢查[SetWindowDisplayAffinity的MSDN條目](https://msdn.microsoft.com/en-us/library/windows/desktop/dd375340(v = vs.85).aspx)。特別是,請查看底部的一些社區補充信息。 –

+0

我已經看到,但我不明白如何將線程注入到目標進程中。 – Vishnu

回答

2

SetWindowDisplayAffinity只能在調用進程擁有的窗口上使用。因此錯誤。該文檔說:

此功能使應用程序能夠保護自己的屏幕窗口內容不被捕獲或通過一組特定的公共操作系統功能和API捕獲或複製。

如果另一個應用程序很容易覆蓋目標應用程序的選擇,該功能將變得毫無用處。

+0

如何在創建時爲Flex應用程序設置** setWindowDisplayAffinity **。有沒有辦法做到這一點? @大衛 - 赫弗南 – Vishnu

相關問題