2014-12-03 28 views
-1

我試圖激活從不同的應用程序創建控制從焦點,我使用鉤識別集中控制,然後使用WM_MOUSEMOVE,我認爲將激活該控件的提示,句柄將是控件本身,並且lParam是控件的左側和頂部。該控件激活OnMouseMove事件,但提示從不顯示。但是當我使用SetCursorPos時,提示顯示,但我需要顯示與該控件上的光標移動提示。你能幫我解決這個問題嗎?預先感謝您......順便說一下,我使用的是Delphi XE4德爾福 - 激活從另一個應用程序的控制提示

+0

這對我來說毫無意義,我們不知道你實際上想要做什麼,以及你如何嘗試去做。你已經在這個問題上提出了一系列神祕的問題,每個人都會提出一個解決方案來解決潛在的問題。我準備打賭你選擇的解決方案是錯誤的。問題是什麼? – 2014-12-03 08:54:53

+0

嗨大衛,那麼問題將是如何強制從另一個應用程序的控制提示顯示沒有光標移動該控制。使用SendMessage,通過lParam的Left和Top控件向控件發送WM_MOUSEMOVE。 – 2014-12-03 08:57:57

+1

這並不是最終的結果。你的計劃實際上試圖用更廣泛的術語來實現什麼? – 2014-12-03 09:15:07

回答

-1

爲了以編程方式顯示提示,您需要調用指定位置參數的TApplications ActivateHint方法。 http://docwiki.embarcadero.com/Libraries/XE3/en/Vcl.Forms.TApplication.ActivateHint

基於位置參數應用程序自動查找哪個控件位於該位置並顯示其提示。

注意:位置參數屏幕座標以像素爲單位而不是您的控制座標。所以你將不得不使用ClientToScreen方法來適當地改變你的座標。

你可以看到如何使用這個在這裏簡單的例子:如果你需要從其他應用程序做到這一點https://stackoverflow.com/a/15031208/3636228

現在,那麼你將有一些交際mechanizm添加到這兩個應用程序,使人們可以發送正確的信息告訴對方在特定位置顯示提示。但是這確實需要您能夠更改這兩個應用程序。

編輯:這適用於VCL應用程序,但我不知道它是否會與FireMonkey應用程序一起使用。

+0

我想你實際上需要鼠標光標在目標控件上,然後才能使用'TApplication.ActivateHint',即使在你的自己的應用。 – kobik 2014-12-04 10:34:58

+0

不符合文檔。檢查我指定的文檔的鏈接。 – SilverWarior 2014-12-04 11:27:17

+1

它有什麼不同?關於激活其他應用程序的提示非常明確。 – 2014-12-04 20:57:44

0

真正被問到的問題是如何顯示駐留在另一個應用程序中的控件的提示(我害怕沒有掛鉤,應用程序無法完成),標題是「Delphi - 從另一個控件的激活提示應用」。

首先是:這可以在不知道其他應用程序的語言完成的情況下完成,但將其放在此處非常複雜(並且我不是這種編碼方式的專家,我也討厭可以工作的應用程序那樣)。第二種:主要想法是勾住其他應用程序,在Google上搜索該應用程序的某些代碼,它可以向您顯示鼠標正在傳遞的對象的矩形孔正方形,該應用程序在執行該操作時會被圖標化(我不記得它的名字)。

Waht這樣的應用程序可以:當您將鼠標移動到屏幕上時,它會在鼠標移過的控件上方覆蓋一個矩形,然後如果您按鍵打印屏幕,那麼這個小區域將是剪貼板的唯一區域;我看到這樣的應用程序有一個額外的功能,他們可以移動這樣的控制,如果你按下鍵盤上的遊標,也可以隱藏/啓用/禁用這樣的控制...更多,它也可以使控制是不可見的,等等...我看到它在我的電腦上工作,嘿,爲了好玩,它很漂亮,在DeBug或在某些應用上獲得額外的東西也很棒(使某些菜單可見並啓用,然後可以使用這些功能)。

請您明白我是否是盜版者,並且不要使用此類應用程序讓代碼運行...某些應用程序需要付費才能讓某些菜單啓用,但他們有代碼,無需更改EXE擁有/使用該菜單;只是使用這種應用程序,使有限的應用程序是無限的(只啓用或顯示隱藏的菜單和瞧)。

注意:要取消隱藏菜單,鼠標點不需要在應用程序上方,可以在任何地方並且不會移動。

我想說的想法是:任何應用程序都可以移動,更改任何正在運行的其他應用程序(至少在Windows上)的任何控件,所以也許可以有一種方法來顯示這樣的提示。

在過去,我已經使用這樣的應用程序(對不起,我不記得名字)DeBug我自己的應用程序,所以我不需要重新編譯在這種情況下,某些東西被錯誤隱藏,也與按鈕,標籤,文本,組合,備忘錄等

現在我的小問題是:我只是需要確切的標題說,但我不能讓它工作。

必須是:

  1. 鼠標位置必須是無關的(它也必須能夠爲應用程序之外)
  2. 只是當按了鍵盤具有焦點的按鈕(空格或者回車)或就在我的應用程序的某個代碼後面,我想在短時間內顯示特定TEdit的提示。

我沒有得到提示;除非鼠標指向結束這樣的TEdit,但我想/需要鼠標指針不要超過它,它不會跳轉到TEdit。

想法顯示該提示的內容:在做了一些改變內容的代碼後,顯示相關的額外信息。

例子:

  • 與A鍵加載使用打開對話框的文件時,文件名被放在一個只讀TEDIT(所以它讓用戶複製的文本,但不改變它);我想額外的信息,我踢。提示這樣的TEdit被顯示在媒體中。

該提示使用是爲了不超載窗口與許多字段(TLabels)用於顯示此類文件數據。

簡單的想法:這樣的提示顯示時間戳和所選文件的大小。

PD:沒什麼關係(因爲我想用普通的純文本提示),但提示也可以存儲一個完整的HTML頁面,並且第三方工具被顯示爲一個HTMLhint,所以他們可以顯示很多信息該文件(也是其內容等)以基於網絡的格式;正如我所說,我首先嚐試使用標準的純文本提示。