Hotkey, um eiinen Screenshot zu erstellen und im Anhang per Email zu versenden
-
Beim letzten Brainstorming im Servicedesk ist die Idee aufgekommen, dass es gut wäre, wenn unsere Kollegen bei Softwareproblemen die Möglichkeit hätten, einfach eine bestimmte Taste zu drücken, dann ein Screenshot erstellt wird und dieser im Anhang per Email an das Servicedesk versendet wird.
Print-screen drücken, Paint öffnen, Zwischenspeicher einfügen usw. ist für unsere Kollegen, die zwar Computer benutzen, aber Fähigkeiten in anderen Bereichen haben, nicht das Nächstliegende.Nun habe ich ja Urlaub, den ich überwiegend Zuhause verbringen werde und deswegen hatte ich mir vorgenommen, das programmierste mal. Das wäre dann mein Einstieg in C/C++ und ich habe mir Visual Studio 2015 Community Edition auf meiner Windows 10 Büchse installiert und los ging's.
Ich hab einfach mal mittendrin angefangen, eine Bildschirmkopie erstellen und eine Email zu versenden wird ja so schwierig nicht sein, wie aber löse ich das Tastendruckproblem - das war mir gar nicht klar. Als erstes bin ich beim googlen auf Keylogger gestoßen und hatte auch schon angefangen, Code auszuprobieren, nachdem ich nach "pollen ist böse" auf Tastatur Hooks gestoßen war. Bei Problemen damit begegnete mir die registerhotkey-Funktion.
Unsere Idee, F12 festzunageln dafür, ist bestimmt eine doofe Idee denke ich mir, sicher gibt es Anwender, die da eine Software laufen haben, die diese Taste braucht, also muss man die Funktionstaste aussuchen können und dann sind wir bei Zustand speichern müssen.
Unsere Anwender sind unprivilegiert an Windows 7, eine Ini-Datei in C:\Windows oder unterhalb von Programme zu aktualisieren scheitert daran wenn das Programm im Userkontext läuft. Registry-Manipulationen auch und für XML habe ich um 2 Einstellungen zu speichern keinen Nerv. Ein simple Ini-Datei kann ich auch in Appdata ablegen und da darf der User das auch. Das halte ich für eine zufriedenstellende Lösung. Eine Ini-Datei in C:\users\<Nutzer>\Appdata\Roaming\MeineFirma\Servicedesk\ abzulegen, finde ich gut.
Wie kriege ich jetzt den richtigen Pfad raus? SHGetfolerpath ist da mein Freund. Und die Verzeichnisse erzeugen und die Ini-Datei mit Defaults abzulegen, gehört iwie wohl zusammen, imho und so sind meine neuen Freunde _mkdir und Get-, sowie WritePrivateProfileString auch noch dazugekommen. Und tja, wie das mit neuen Freunden so ist, ist das Kennenlernen mit mancher Überraschung angereichert.
In C++ wollten die beiden letzteren ja gar nicht mitspielen z. B. und ich fand raus, mit A-Krücken ging das dann.Wieso das so ist, habe ich dann vermutlich gelernt. Das sind uralte Knochen aus C Zeiten, noch vor Unicode. Also habe ich ein CLI-App erstellt und Multibyte anstelle von Unicode in den Eigenschaften festgelegt und schon flutscht das erste Sahne.
Teil 1 von mehreren Teilprojekten betrachte ich hiermit vorläufig als fertig.
...Ihr dürft klatschen! :p
Iwie fertig ist auch schon das Fenster, nur die Screenshot und Mapi-Kisten sind noch dunkel. Das Fenstergedöns ist aber weit, weit entfernt von der Multibyte-Cli und ich frage mich so langsam, wie ich da wohl Daten fließen lasse...
Und da ist sie, die Frage. Kann ich vom Fenster-Main.cpp von der Multibyte-Cli Strings abfragen oder nicht?
-
Hallo Theo!
Liest Du genau so gerne, wie Du offenbar schreibst?
-
Oh, zuviel? Ich bessere mich, versprochen.
-
Das war schon eine ernstgemeinte Frage, auf die ich mir eine Antwort erhofft habe.
-
Theodor schrieb:
Und da ist sie, die Frage. Kann ich vom Fenster-Main.cpp von der Multibyte-Cli Strings abfragen oder nicht?
Keine Ahnung, was du meinst Ist alles noch etwas schwammig formuliert.
Ich hab jetzt auch nicht mal verstanden, ob du die Screenshot Funktionalität in eure eigene Anwendung direkt integrieren willst, oder ob du ein externes Programm schreiben willst, das unabhängig von eurem eigentlichen Programm läuft.Wenn du zweiteres willst, schau dir mal Greenshot an. Das hat verschiedene Targets und kann glaub ich auch Emails versenden, aber das habe ich nie ausprobiert. Gibt sicher auch dutzende andere Screenshot Tools, aber Greenshot ist schon ein guter Open Source Vertreter. Und wenn dich interesssiert, wie das funktioniert, kannst mal in den Code schauen. Du wirst wahrscheinlich erstmal überrascht sein, wie umfangreich der ist, das ist schon einiges Macht wenig Sinn, das nachzubauen.
Wenn du die Funktionalität direkt in eure Anwendung integrieren willst, ist es was anderes. Dann würdest aber wahrscheinlich auch anders vorgehen.
-
Die Sache soll simpel für den Anwender sein.
Aber ich habe natürlich keine Lust, etwas zu programmieren, was es (fast) so schon gibt.Greenshot sieht schon mal sehr nach "fast so" aus, das schaue ich mir mal an, danke für den Tip, Mechanics!
-
Zu dem ganzen OP fällt mir nur "Naja..." ein.
Deine Kollegen sind alle Volltrottel. Du der Held, der ein ScreenshotProgramm programmieren kann, das immer nur eine schwarze Fläche darstellt.
Das Ganze erklärt in einem post der fast so lang ist wie ein griechisches Drama.
Naja...