2016-06-10 11 views
0

Gibt es eine Möglichkeit festzustellen, ob eine C# xamarin-Konsole-Bibliothek ausgeführt wird oder über ein Terminal ausgeführt wird? das ist so ierkennen, ob ein Programm über die Eingabeaufforderung ausgeführt wird

console.read(); 

, wenn der Benutzer das Programm direkt hinzufügen können, ausgeführt wird, so dass sie die Ausgabe des Programms

+2

Wenn Ihre App eine Bibliothek ist, ist dies sicherlich die Verantwortung der Konsole App, die es verwendet? –

+1

Wenn Sie "C# console library" sagen, meinen Sie, dass dies ein "Klassenbibliothek" -Projekt in Visual Studio ist? Wenn ja, lesen Sie von der Konsole an der falschen Stelle. –

+0

ist es ein Konsolen-Projekt in Xamiran Studio – AlexanderRD

Antwort

0

So etwas sollte man in die richtige Richtung gestellt sehen: (https://msdn.microsoft.com/en-us/library/z3w4xdc9(v=vs.110).aspx)

var processes = Process.GetProcessesByName("Name"); 
if(processes.Count > 0) 
{ 
    //do something here 
} 
+1

Das ist kein sehr sicherer Weg, um es zu bestimmen. Mehrere CMDs können zu jedem beliebigen Zeitpunkt aus irgendeinem Grund geöffnet sein. –

0

den Befehl

Environment.CommandLine 

erlaubt den Befehl, der das Programm geöffnet hat. wenn das Programm in der Befehlszeile ausgeführt wird, die Environment.CommandLine zeigt

ProgramName -parameter 

Allerdings, wenn es über den Explorer oder ein Debug-Programm aufgerufen wird, wird es als

"PathToFile/ProgramName.exe" 

Dies erlaubt den Prozess aufgerufen werden, um zu sehen Wenn es über Explorer oder CMD über einige if Statements aufgerufen wird

+0

Nicht unbedingt. Darauf können Sie sich nicht verlassen. –

+0

Worauf kann ich mich verlassen, um den Unterschied zu machen? – AlexanderRD

+0

Nun, deshalb haben Sie die Frage gestellt. :-) Ich kann mir ein paar bessere Lösungen vorstellen, war aber zu faul, um eine Antwort auf eine mit C# gekennzeichnete Frage zu schreiben, komplett mit p/invoke code. Wenn Sie jedoch nach einem Zeiger in die richtige Richtung suchen, können Sie versuchen, 'GetStdHandle' aufzurufen und prüfen, ob es einen Stout-Handle hat. Eine Standard-Windows-Anwendung hat keine, es sei denn, jemand hat sie ausdrücklich angegeben. In diesem Fall ist es logisch, mit 'Console.Read' zu schreiben. Konsolenanwendungen haben diese Griffe natürlich standardmäßig zur Verfügung. –

Verwandte Themen