Hallo Leute,
kurze Frage: Gibt es die Möglichkeit auszulesen, welche Maustaste die momentane Primäre ist, also ob links mit rechts getauscht wurde?
Viele Grüße,
MadCatz
Hallo Leute,
kurze Frage: Gibt es die Möglichkeit auszulesen, welche Maustaste die momentane Primäre ist, also ob links mit rechts getauscht wurde?
Viele Grüße,
MadCatz
Wozu benötigst Du das?
Es gibt $GUI_EVENT_PRIMARYUP/-DOWN und $GUI_EVENT_SECONDARYUP/-DOWN.
Somit kannst Du auf die jeweilige Taste reagieren, ohne dass Du erst ermitteln musst welche Taste welche ist.
Hi,
ich muss das KontextMenü von Windows verhindern, da ich nicht will, dass man hierrüber eine Datei einfach kopieren kann.
Da man das aushebeln kann, indem man einfach links mit rechts tauscht muss ich wissen welche Taste die Primäre ist, damit die Sekundäre unterdrückt wird.
mir _ispreset(02) frag ich nämlich ja nur ab, ob die rechte geklickt wurde.
#include <WinAPI.au3>
If _WinAPI_GetSystemMetrics($SM_SWAPBUTTON) Then
ConsoleWrite('Default: RIGHT' & @CRLF)
Else
ConsoleWrite('Default: LEFT' & @CRLF)
EndIf
Eine andere Möglichkeit zum Verhindern des Kontextmenüs:
Windows-Message für Kontextmenüaufruf hooken und verwerfen wenn es für dein Ctrl ist.
Das wird dir aber auch nicht helfen, es zu verhindern.
Der Benutzer kann die Datei ja immer noch auswählen und STRG+C drücken.
Die primäre Frage ist: Warum willst du es verhindern? Und wieso sollte es ein Problem darstellen, eine Datei kopieren zu können?
Wenn du nicht willst, dass die Datei irgendwohin gelangen kann, dann lagere die (welche auch immer) Daten auf einem Server, auf den alle zugreifen.
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $hMouse_Proc_LL = DllCallbackRegister("_MouseHook_Proc_LL", "int", "int;ptr;ptr")
Global $hMouse_Hook_LL
Global $hGui = GUICreate("MouseBlock", 220, 80)
GUISetOnEvent(-3, "_Exit")
GUICtrlCreateCheckbox("Block Mouse", 10, 10, 100, 20)
GUICtrlSetOnEvent(-1, "_BlockMouse")
GUISetState()
While Sleep(10)
WEnd
Func _MouseHook_Proc_LL($iCode, $wParam, $lParam)
If $iCode < 0 Then Return _WinAPI_CallNextHookEx($hMouse_Hook_LL, $iCode, $wParam, $lParam)
Switch $wParam
Case $WM_RBUTTONDOWN, $WM_RBUTTONUP
ToolTip("Secondary Mousebutton blocked...")
Return 1
EndSwitch
Return _WinAPI_CallNextHookEx($hMouse_Hook_LL, $iCode, $wParam, $lParam)
EndFunc ;==>_MouseHook_Proc_LL
Func _BlockMouse()
If GUICtrlRead(@GUI_CtrlId) = 1 Then
$hMouse_Hook_LL = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hMouse_Proc_LL), _WinAPI_GetModuleHandle(0), 0)
Else
If $hMouse_Hook_LL Then _WinAPI_UnhookWindowsHookEx($hMouse_Hook_LL)
$hMouse_Hook_LL = 0
EndIf
EndFunc ;==>_BlockMouse
Func _Exit()
If $hMouse_Hook_LL Then _WinAPI_UnhookWindowsHookEx($hMouse_Hook_LL)
DllCallbackFree($hMouse_Proc_LL)
Exit
EndFunc ;==>_Exit
Alles anzeigen
@BugFix und @eukalyptus vielen Dank für eure Codes Die sind genau das was ich brauche
@Xorianator ich weiß wie ich Str+C verhindern kann, aber die Mous war halt das Problem.
Ich brauche das, da ich den kompletten kopierversuch verhindern will. Server kommt nicht Infrage. Die Dateien sollen Lokal verwendet werden können. Sind allerdings verschlüsselt, wenn nicht verwendet. Wenn die verwendet werden, sind sie entschlüsselt und in dem Fall könnte man diese Kopieren, und das muss ich abfangen. Dazu werd ich soviele Wege wie möglich verhindern, sodass sich das unerlaubte kopieren der Datei ohne Aufwand erst gar nicht mehr lohnt.
Ich Danke euch
PS: Server kommt nicht in Frage, muss alles local ablaufen
Und wie blockst du, dass jemand die Datei per anderer Tools kopiert? Total Commander z.B.?
Nicht zuletzt die Tatsache, dass man per Windows Explorer auch einfach eine Datei auswählen und über Start->Kopieren die Datei einfach kopiert.
Noch eine Anmerkung: Warum lädst du sie nicht entschlüsselt in den RAM? Dann bekommt man die zwar immer noch (recht einfach) wieder raus, aber nicht mehr als 0815 User.
Und - Wenn du sie per AutoIt Ver- / Entschlüsselst ist das ebenfalls nicht sicher.
Das öffnen von anderen Anwendungen/Fenstern wird geblockt. Das schließen des Scripts wird geblockt. Nur bestimmte Tasten werden zugelassen.
Alle Versuche eines Users, die Warnhinweise auszulassen führen dazu, dass die Datei mit einem Randomkey verschlüsselt.
Ein normalsterblicher Anwender wird es wohl kaum hinbekommen die Verschlüsseleung auszuhebeln, ohne sich damit zu beschäftigen.
Die Idee mit dem Ram find ich gut, wusste gar nicht, dass es dazu schon ne UDF gibt Werd ich mir mal ansehen.
Tut nicht genau FileRead eben selbiges? Und die Crypt Funktionen übergeben doch sowieso wieder Daten in den Speicher, nicht auf die Festplatte?
Tut nicht genau FileRead eben selbiges? Und die Crypt Funktionen übergeben doch sowieso wieder Daten in den Speicher, nicht auf die Festplatte?
Verstehe leider nicht was du meinst
Wenn du per FileRead() eine Datei liest, dann wird der Inhalt dieser Datei in den Arbeitsspeicher gelegt.
Wenn du jetzt eine Funktion hast, hier mal _Crypt_DecryptData() dann kannst du die Variable mit dem Inhalt der Datei übergeben, und die decrypteten Daten befinden sich dann ebenfalls wieder im RAM.
Verstehe also nicht, warum du zwischendrin eine Datei brauchst - Es sei denn, dein Arbeitsspeicher ist sehr begrenzt, was ich aber stark bezweifle
€: Also worauf ich hinaus will: Hast du mal ein Script zur Hand, bzw. eine Erklärung für den genauen Versuchsaufbau, warum die entschlüsselten Daten auf der Festplatte rum liegen müssen?
mit fileread bekomme ich aj keine pdf oder xls geöffnet, daher kann ich die nicht verwenden.
Wenns dafür natürlcih ne schöne Lösung hinbekommen würde, ohne das ganze auf die Festplatte auszulagern, wäre das natürlcih deutlcih besser, da geb ich dir vollkommen recht.