Das Maus Hooking verursacht ein laggen der Mausbewegung. Habt ihr das auch? Falls ja, wie kann man das abstellen?
Beiträge von UEZ
-
-
Ich suche nach einer Möglichkeit das Systemmenu eines Consolen Fensters (CMD Box) zu hooken, um ein Menu Eintrag, das ich angelegt habe, zu kontrollieren.
D.h., wenn ich z.B. ein Menü Eintrag "About" hinzufüge und dieser selektiert wird, soll dann ein Prozess starten.
Leider habe ich kein Weg gefunden, um diesen Event zu kontrollieren, wie er normalerweise über WM_NOTIFY möglich wäre.
Hat jemand eine Idee?
Edit: dies scheint zu funzen.
AutoIt
Alles anzeigen#AutoIt3Wrapper_Change2CUI=y #include <GuiMenu.au3> #include <WinAPIConstants.au3> #include <WinAPISys.au3> #include <WindowsConstants.au3> Global $id_Test = 1000 Global $hConsole = DllCall("kernel32.dll", "hwnd", "GetConsoleWindow")[0] HotKeySet("{ESC}", "_Exit") Global $hSysmenu = _GUICtrlMenu_GetSystemMenu($hConsole) Global $iCount = _GUICtrlMenu_GetItemCount ($hSysmenu) _GUICtrlMenu_InsertMenuItem($hSysmenu, $iCount, "Test", $id_Test) Global $hMouseFunc = DllCallbackRegister("_MouseHook", "int", "int;wparam;lparam") Global $hMouseHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hMouseFunc), _WinAPI_GetModuleHandle(0)) Do Sleep(50) Until False Func _Exit() _WinAPI_UnhookWindowsHookEx($hMouseHook) DllCallbackFree($hMouseFunc) Exit EndFunc Func _MouseHook($iCode, $iwParam, $ilParam) If $iCode >= 0 And $iwParam = $WM_LBUTTONDOWN Then If $hSysmenu Then If _GUICtrlMenu_GetItemHighlighted($hSysmenu, $id_Test, False) Then ConsoleWrite("Test selected" & @CRLF) EndIf EndIf Return 0 EndIf Return _WinAPI_CallNextHookEx($hMouseHook, $iCode, $iwParam, $ilParam) EndFunc -
Bitnugger vielen Dank! Funzt wie erwartet!

Jetzt muss ich sehen, ob man auch für das CMD Box Fenster dies anwenden kann.
-
Hat jemand eine Idee, wie ich ein Menu Item, welches ich mit _GUICtrlMenu_RemoveMenu() gelöscht habe, wieder zurückholen kann mit allen Untermenüs?
Beispiel: in Notepad wird der Menueintrag "Hilfe / Help" gelöscht.
AutoIt
Alles anzeigen#include <GuiMenu.au3> Example() Func Example() Local $hWnd, $hMain ; Open Notepad Run("notepad.exe") WinWaitActive("[CLASS:Notepad]") $hWnd = WinGetHandle("[CLASS:Notepad]") $hMain = _GUICtrlMenu_GetMenu($hWnd) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hMain = ' & $hMain & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $iD = _GUICtrlMenu_GetItemID ( $hMain, 4) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iD = ' & $iD & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console $hMenu_save = _GUICtrlMenu_GetItemSubMenu($hMain, 4) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hMenu_save = ' & $hMenu_save & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Sleep(1000) ; Remove Help menu _GUICtrlMenu_RemoveMenu($hMain, 4) Sleep(2000) ;~ ConsoleWrite(_GUICtrlMenu_SetMenu($hMain, $hMenu_save) & @CRLF) ;~ ConsoleWrite(_GUICtrlMenu_SetItemSubMenu ( $hMain, 4, $hMenu_save) & @CRLF) ;~ _GUICtrlMenu_InsertMenuItem ( $hMain, 4, "Help", $iD, $hMain) _GUICtrlMenu_DrawMenuBar($hMain) EndFunc ;==>ExampleZitat
Deletes a menu item or detaches a submenu from the specified menu. If the menu item opens a drop-down menu or submenu, RemoveMenu does not destroy the menu or its handle, allowing the menu to be reused. Before this function is called, the GetSubMenu function should retrieve a handle to the drop-down menu or submenu.
Danke.
-
Heute habe ich dein Tool gestartet... und nach dem ~17 Song ist auf einmal nur noch Stille... kommt nichts mehr... aber (das Wichtigste) der Ball dreht sich noch.

Puuh, da bin ja beruhigt.

Für die zusätzlichen Buttonbar-Windows überwacht DisplayFusion die Position der Windows, die eine Titelbar haben. Ändert sich eine Position, wird das zugehörige Buttonbar-Windows entsprechend verschoben. Mehr passiert nicht mit den Windows. Falls gewünscht, kann man das Erzeugen eines zusätzlichen Buttonbar-Windows für bestimmte Fenster aber auch unterbinden... FireFox ist in der Liste schon vordefiniert.
Falls es dir nicht zu viel Umstände bereitet: könntest du das Tool mal abschalten und nochmals testen? Denn ich arbeite primär auch auf Win10 x64 und bei mir läuft alles wie geplant.

-
DisplayFusion... daran liegt es aber sicher nicht, denn da wird nur was ausgelöst, wenn ich einen der Buttons anklicke.
Fenster auf Titelleiste reduzieren, Fenster auf nächsten Monitor verschieben, Fenster immer im Vordergrund halten, Einstellungen (DisplayFusion) öffnen
Hmm, die Aussage ist aber gewagt. Irgendwie muss das Tool ja sich in die CMD Fenster einklinken und entsprechend reagieren. Ich möchte aber auch nicht behaupten, dass dies daran liegt, aber ausschließen möchte ich es auch nicht.
Radio Station amigaremix.com.exe
Nach dem 3. Song ist der Ball weg und ich sehe nur noch ein schwarzes Rechteck... nach dem 4. ist auch das weg... Win 10 X64.
Ist das immer nach dem 3. Song?
-
Ist wie beim Abspann von einem Film. In seltensten Fällen wird der Abspann angeschaut, es sei denn, man kann was sehen und/oder hören.

Die fliegenden Buchstaben eignen sich eher für kürzere Texte. Für längere Texte würde ich dann eher eine Laufschrift nehmen, wie beim Filmabspann.
-
Hier meine Version auch im diesem Forum.

-
Radio Station amigaremix.com.exe
Nach dem 3. Song ist der Ball weg und ich sehe nur noch ein schwarzes Rechteck... nach dem 4. ist auch das weg... Win 10 X64.
Erst einmal danke fürs Testen. Hmmm, das ist aber komisch, denn ich arbeite primär auch mit Win10 x64 und bei mir dreht sich der Ball durchgehend, zumal die GIF Animation alle 30 ms aktualisiert wird.
Bei dir muss wohl was anders sein. Ich sehe auf dem Screenshot, dass die CMD Titelleiste noch einige Icons hat, die kein Standard sind. Was ist das für ein Tool, dass sich in das CMD Fenster einklinkt?
-
Danke @Musashi für's Testen.


-
Sodele, sollte nun eigentlich auch auf Win7 rund laufen.
Könntet ihr bitte nochmals testen? In meiner Win7 VM sah alles gut aus.
Danke.

Ein Problem habe ich noch, wenn bei einer Multi Monitor Umgebung mit verschiedenen DPI Einstellungen das Fenster zwischen den Monitoren hin und her bewegt wird, dann schrumpft das Fenster.
-
ConEmu - mein Favorit für die CMD.
Schaue ich mir an.
Das mit der rechten Maustaste ist ein Feature der Console, d.h. der Inhalt des Clipboards wird in die Console gesendet (Quick Edit Mode). Muss mal checken, wie ich dies abschalten kann.
-
Das Tool ist nicht "DPI aware", denn, falls du mindestens zwei Monitore mit unterschiedlichen DPI Einstellungen hast, wird das Fenster "eingestampft", wenn du die Console zwischen den zwei Bildschirmen hin und her bewegst.
Das mit dem Verschieben checke ich nochmals.
-
Was ist das für eine EMU Software?
-
ABER: Die Datei kann nicht aus der Konsole aufgerufen werden, wenn ich nicht vorher in das Verzeichnis wechsele (Bass.dll wird nicht gefunden). Hier vielleicht vor dem Initialisieren der Bass.dll intern den Ordner der exe abfragen und als WorkingDir setzen.
Beim Start aus dem Datei-Browser wird ja das korrekte WorkingDir mitgegeben, beim Aufruf über Win+R ebenfalls.
Jetzt verstehe ich, was du meinst. Sollte jetzt gefixt sein. Ich habe jetzt "Exepath" zum initialisieren mitgegeben.
Aber eines ist mir aufgefallen (Windows Command):
Anwendung kann nicht über "Schließen-Button" beendet werden. Man kann nur minimieren oder per Kontextmenü Schließen (gewollt?).

Jep, denn wenn du über "X" schließt, werden die geöffneten Ports und Handles nicht sauber geschlossen. Einfach ESC oder q drücken. Ist ja eine Konsolenanwendung...
Bei Verwendung von Console Emulator ist die Amiga Grafik vollständig eingebettet (auf dem Screenshot sieht das 2-farbig aus - real ist es aber derselbe Farbton).
Mit Rechts-Klick in die Shell wird hier sofort der Download eingeleitet und anschließend ein neuer Titel gesucht und gestartet.
Ich habe nicht herausfinden können, wie ich die Hintergrundfarbe im RGB Format auslesen kann, deshalb lese die den Pixel an der Position (0, 0) aus und setze die Farbe entsprechend für die Bitmap. Das mit dem dem Rechts-Klick ist aber komisch. Das kann ich auch unter Win10 nachvollziehen. Hmmm, muss ich schauen, warum dies passiert.
Ich habe die neue Version hochgeladen. Kannst du bitte diese auch testen?
DANKE!
-
herumflackernde 'Coded by UEZ ...'
Das Geflacker sollte eigentlich die Levels des Songs in Mono wiedergeben.

-
Ich habe jetzt auch eine Bildschirm Brille bekommen. Meine Augen machen auch nicht mehr mit...
Jetzt muss ich noch die DPI Checks einplanen...
Eigentlich wollte ich was ganz simples coden, aber man kommt von Pontus zu Pilatus.

-
Um den Amigaball zu sehen, muss aber immer noch die Breite der Konsole erhöht werden.
Hmmm, das kann ich nicht ganz nachvollziehen, warum bei dir der Ball außerhalb liegt. Hast du vielleicht an den DPIs Einstellungen was gedreht?
Auf deinem Screenshot ist die Font Größe anders als bei mir, obwohl sie gleich sein sollte. da der Font und die Größe mit einem statischen Wert geändert werden.
-
Sodele, müsste jetzt auch auf Win7 "richtig" aussehen.
Bitte mal testen + Download Funktion (einmal auf "d" drücken). Funzt der Download?
DANKE

-
Stimmt, ich sollte die Breite auslesen uns so den Ball entsprechend positionieren.
Danke nochmals für's Testen!!!