簡體   English   中英

以編程方式檢索窗口句柄並按下按鈕

[英]Retrieve Window Handle and Press Button Programatically

我敢肯定,這是有可能的,但是不確定是否有太多的障礙需要克服,希望有人能指出我正確的方向。 我遇到了一個問題(與安裝程序有關),因此我經常彈出對話框,需要按“取消”。

我想做的是以編程方式/可能通過服務將其關閉,以使其不再妨礙我(假設我無法解決根本問題)。 因此,我想知道的是,是否有一種方法可以某種方式抓住窗口的句柄(檢查是否正確,也許是通過在標簽上進行文本比較),然后在窗口上找到控件(取消按鈕)並發送一個事件嗎?

如果有人知道我將如何實現這一目標或一些入門者,那就太好了。

看一下AutoIt3 它可以很容易地進行此類轉換,如果您對其進行了更深入的了解,您將發現它用來執行其工作的WindowsAPI調用。 如果您確實需要這些API,則可以在C#中PInvoke。 否則,只需編寫一個AutoIt腳本即可執行您的任務。

有兩種方法可以做到這一點:

  • 要獲取句柄,當您談論窗口時,請使用FindWindow API,然后必須枚舉與該句柄關聯的控件,並一起發送消息WM_BUTTONDOWN,WM_BUTTONUP,以使用SendMessage來模擬鼠標單擊。
  • 但是存在更簡單的方法,假設取消按鈕稱為btnCancel ,那么這足以滿足btnCancel.Click()

除非我弄錯了,否則您在談論的是不是您自己的過程的窗口,那么我的第一個建議就可以了。 由於您沒有說,如果您是在談論自己的應用程序或不是您自己的進程的窗口,那么奧利弗的建議可能會更容易...

但這引出了一個問題:假設在某處有一個“取消”按鈕時,為什么要這么做?

希望這對您有所幫助,湯姆,謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM