我目前正在研究基於Arduino的可編程鍵盤。 C#程序獲取通過USB按鍵的信息。到目前爲止,我能夠使用快捷方式打開程序,...C#活動程序識別
作爲一個補充,我希望對不同的程序有不同的鍵綁定。 爲了得到這個工作,我必須從活動程序中獲取特定的細節,如exe文件的名稱。
雖然搜索我已經發現,我可以得到與GetActiveWindow
功能的活動窗口,我知道,我必須使用另一個Windows功能,但我還沒有找到哪一個。
我能夠獲得窗口的標題文本,但是這個文本對於每個打開的Word文檔都是不同的,所以我不能使用它。
任何人有哪些功能,我可以使用一個線索,讓特定的比較的東西與if語句,就像這樣:
string activeProgram;
...
if(activeProgram=="Word"){...}
else if(activeProgram=="Chrome"){...}
代碼工作到目前爲止,我得到了我的文件的完整路徑(這是我可以很好的工作,謝謝你),但問題是,當我想獲得另一個窗口的名稱,我得到Win32異常,因爲我無法使用32位進程訪問64位進程。我可以將自己的文件製作成64位程序嗎?還是有另一種方式? – Schiep
@Schiep首先確保你不是在IntPtr和int之間進行投射。你需要聲明['GetActiveWindow'來返回IntPtr](http://www.pinvoke.net/default.aspx/user32.getactivewindow)。其次,您可能需要爲32位和64位配置編譯目標(在「生成」 - >「配置管理器」下)。請參閱msdn上的[64位應用程序](https://msdn.microsoft.com/en-us/library/ms241064.aspx)。文章[將現有.NET(C#)應用程序移植到64位的注意事項](https://www.ibm.com/support/knowledgecenter/SSGSMK_7.1.1/development_sym/app_net_port_64bit.html)可能會有所幫助(忽略Symphony)。 – Theraot