2016-11-14 4 views
1

Ich verwende Tortoise SVN und TortoisePlink für Remote-SSH-Verbindungen. Von Zeit zu Zeit TortoisePlink anzeigt Fehler wie:Kann MessageBox unterdrückt werden, wenn ein bestimmter Befehl ausgeführt wird?

--------------------------- 
TortoisePlink Fatal Error 
--------------------------- 
Network error: Software caused connection abort 
--------------------------- 
OK 
--------------------------- 

Und sie erscheint als messagebox und müssen vom Endbenutzer angeklickt werden.

Ich habe versucht, messagebox mit -batch von der Befehlszeile zu unterdrücken, aber das Problem kann noch reproduziert werden. Für mich reicht es aus, wenn ich die MessageBox-Abfrage deaktiviere und beispielsweise in der Befehlszeile die gleichen Informationen ausdrucke - da mein Batch später automatisch erneut versucht.

Gibt es eine solche Software, die das Standardfensterverhalten außer Kraft setzen und im Konsolenfenster drucken kann, was auch immer im Nachrichtenfeld angezeigt wird.

Ich denke, in einfachen Worten ausgedrückt solches Kommandozeilen-Tool leicht erstellt werden kann, zum Beispiel

mit

http://www.codeproject.com/Articles/44326/MinHook-The-Minimalistic-x-x-API-Hooking-Libra

und MessageBoxA/MessageBoxW außer Kraft setzen - aber habe jemand diese Art der Sache getan?

+0

Wenn Sie Glück haben, können Sie den [TortoisePlink-Code] (https://sourceforge.net/p/tortoisesvn/code/HEAD/tree/trunk/ext/TortoisePlink/) direkt ändern. – Dialecticus

+0

Ah, wusste nicht, wo dieser Code ist. Lass es mich später überprüfen. Danke BTW! – TarmoPikaro

+0

Aber natürlich benötigt es einige Abhängigkeiten von Windows, kompiliert nicht aus der Box. – TarmoPikaro

Antwort

0

Ich denke, du gehst in die falsche Richtung. Anstatt zu versuchen, die Dialogfelder zu unterdrücken, die TortoisePlink anzeigt, verwenden Sie die original Plink. TortoisePlink ist eine Abzweigung von Plink, um explizit Meldungsfelder anzuzeigen, und nicht Drucken Sie alles über eine Befehlszeile, da es für eine UI-App und nicht für Konsolen-Apps entwickelt wurde.

Und wenn Sie wirklich nur svn aus einer Batch-Datei verwenden möchten, verwenden Sie nicht TortoiseSVN, sondern den ursprünglichen svn-Befehlszeilenclient (kann auch mit dem TSVN-Installationsprogramm installiert werden) und den Befehl 'svn' verwenden Befehlszeile.

+0

Ich benutze Tortoise SVN für automatische SVN Updates - also muss ich es als Batch verwenden. Und ja, ich benutze Svn Befehl für diesen Zweck. Zusätzlich dazu nutze ich TortoisePlink zur Unterstützung des svn + ssh: // Protokolls. – TarmoPikaro

+0

verwenden Sie stattdessen 'svn up/path/to/workingcopy'. TortoiseSVN ist ein UI-Client und nicht für die Stapelverarbeitung gedacht. Und dann konfigurieren Sie Plink anstelle von TortoisePlink verwendet werden. – Stefan

+0

Nach meinem besten Verständnis soll es für die Stapelverarbeitung verwendet werden - es gibt sogar -Batch Befehlszeilenargument dafür. Aber wo bekomme ich Plink.exe statt für Windows? – TarmoPikaro

-1

TortoisePlink.exe ist für Endanwender targetted - so ist es vorgesehen Meldungsfelder angezeigt werden, aber - es gibt auch eine Kommandozeilenversion von plink.exe und kann hier heruntergeladen werden:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Bitte beachten Sie, dass "TortoiseSVN"> "Einstellungen"> "Netzwerk"> "SSH Client" TortoiseLink.exe verwenden sollte - Fehler werden dem Endbenutzer angezeigt.

Für jedoch folgende Datei -

%appdata%\Subversion\ 
file ‘config’: 
In section [tunnels] 
Add line like this: 
ssh = Plink.exe -l <your login> -pw <password> 

Sie sollten Kommandozeilenversion von plink.exe verwenden (das auch anzeigt Eingabeaufforderung beim Start).

Es ist einfacher zu speichern PLink.exe als nächstes mit TortoisePlink.exe, das ist in C:\Program Files\TortoiseSVN\bin.

Ich habe versucht, ein Befehlszeilenprogramm zum Unterdrücken von Messageboxen zu machen, aber es ist nutzlos für TortoisePlink.exe (Habe nicht das Problem geklärt), aber falls es dich interessiert (Habe andere Mittel, es zu benutzen)):

https://sourceforge.net/p/diagnostic/svn/HEAD/tree/Tools/msgboxSupress/

msSupress.cpp in DLL kompiliert und verwendet es minimalistisch Haken für Fenster MessageBoxA und MessageBoxW deaktivieren - tatsächlich werden sie gedruckt werden, um die Konsole oder eine Datei umgeleitet.

msSupressExe.cpp wird in .exe kompiliert und startet den Prozess im gesperrten Modus, ersetzt den Eintrittspunkt von .exe durch EB FE (springt in sich selbst hinein), wartet, bis diese Adresse erreicht ist, injiziert .dll und .dll haken neuer Prozess.

Ich habe nur auf 64-Bit-Plattform getestet - ich vermute, dass der Befehl ausgeführt wird muss die gleiche Plattform wie msSupress.exe übereinstimmen.

So typischerweise TortoisePlink.exe messagebox angezeigt werden - aber wenn wie folgt ausgeführt:

mbSupress.exe "C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" 

gleiches Material wie über Meldungsfenster angezeigt wird in der Konsole angezeigt werden.

Ich denke, diese Lösung ist ein guter Prototyp für die weitere Konstruktion von Viren oder Trojanern - mit einer solchen Technik wird es möglich, auch Tastaturanschläge auf jede Anwendung abzufangen - aber ich habe jetzt ein Befehlszeilenprogramm, kein Virus.

Verwandte Themen