Ozelott Geschrieben 15. November 2006 Geschrieben 15. November 2006 Hallo, ich möchte im Visual Studio 6 einen Systemdienst (WinVNC4) abfragen ob er gestartet ist oder nicht. Hat das jemand schon mal gemacht??? MFG -> Christian Zitieren
Guybrush Threepwood Geschrieben 15. November 2006 Geschrieben 15. November 2006 Das kannst du mit QueryServiceStatus machen Zitieren
Ozelott Geschrieben 15. November 2006 Autor Geschrieben 15. November 2006 Danke aber ich hab es mit deinem Tipp nicht hinbekommen (bin der Programmierung nicht so mächtig). Hab es über Umwege aber trotzdem geschafft Hab mir erst über das Microsoft Tool "sclist" ne Datei schreiben lassen in der alle Dienste aufgeführt sind und dann die Datei auf den Dienst durchsucht. Ich weiß das ist bestimmt Programmiertechnisch unter aller Sau aber es geht und für mich reicht es. Äh mal noch ne Frage ist es schwer die IP Adresse auszulesen???? Zitieren
Guybrush Threepwood Geschrieben 15. November 2006 Geschrieben 15. November 2006 Mit dem Systemaufruf "ipconfig >c:\test.txt" und dann die Datei auslesen *SCNR* Zitieren
Ozelott Geschrieben 15. November 2006 Autor Geschrieben 15. November 2006 Die Idee hatte ich auch nur ich habs noch verfeinert ipconfig | find "IP-Adresse" > %temp%\\IP.log muss nur noch die Datei auslesen Warum muss Programmierung (für mich) immer so umständlich sein. Kann es nicht etwas geben was mir alle IP Adressen in eine Variable schreibt...... Zitieren
Guybrush Threepwood Geschrieben 15. November 2006 Geschrieben 15. November 2006 Das war ein Witz als Reaktion darauf wie du das mit dem Service gemacht hast Zitieren
Bubble Geschrieben 15. November 2006 Geschrieben 15. November 2006 :eek Das mit dem Umweg über eine Datei ist nur ein Scherz, oder? Kann es nicht etwas geben was mir alle IP Adressen in eine Variable schreibt...... Eben ging es um Dienste, jetzt um IP-Adressen? Was möchtest Du genau? Die IP-Adressen eines Computers kann man natürlich auflisten. Zitieren
Ozelott Geschrieben 15. November 2006 Autor Geschrieben 15. November 2006 Also erstens steh ich mit der Programmierung auf Kriegsfuß (Bin ja nicht umsonst Systemintegrator geworden). Ich war dann auch mal 6 Wochen bei uns in der Programmierung um den Kriegsfuß loszuwerden nur ist das schon über ein halbes Jahr her. Nun zu meinem Vorhaben: Ab und zu muss ich meinen Eltern (nicht so fit am Rechner) über die Ferne am PC weiterhelfen. Nun ist das immer ein Krampf am Telefon die Schritte durchzugehen Klick da, gib das ein, mach das, lies das vor ... Und da dachte ich mir ein kleines Prog zu schreiben was alles nacheinander macht und ein bissel Text ausgibt was es gerade macht. Und am Ende fett gedruckt die IP Adresse. Naja hab mich dann heute dran gemacht und mich bei den Diensten und der IP Adresse kaputt gegoogelt. Mal abgesehen von Meter langem Quellcode der mir nix sagte. Am Ende war es mir dann egal wie es intern aussieht aber dafür geht es. Zitieren
Bubble Geschrieben 15. November 2006 Geschrieben 15. November 2006 Fertige Tools zum Auflisten von IP-Adressen gibt es jede Menge. Wenn Du eine Empfehlung benötigst, bitte per PM. Die von Dir gesuchten Informationen werden auch via WMI bereitgestellt. Wenn Dir Programmieren aber gar nicht liegt, wird Dir dies aber auch nicht helfen. Zitieren
maddin Geschrieben 22. November 2006 Geschrieben 22. November 2006 Das ganz vieleicht doch einmal ohne den Umweg über die Dateien. Ist ja schließlich möglich und wir wollen ja nicht, dass das noch jemand so mach - oder? Also den Status deines Services bekommst du wie bereits angesprochen über QueryServiceStatus. // Manager öffnen SC_HANDLE mgr = OpenSCManager(NULL, NULL, GENERIC_READ); // Service öffnen // evtl. den Namen anpassen. Der Anzeigename unterscheidet sich in der // regel vom internen Namen. SC_HANDLE svc = OpenService(mgr, "WinVNC4", SERVICE_QUERY_STATUS); SERVICE_STATUS status; if (QueryServiceStatus(svc, &status)) { if (status.dwCurrentState == SERVICE_RUNNING) // Service läuft. } Ist nicht 100%ig getestet, sollte aber laufen. Die IP Adresse bekommst du z.B. über void get_host_name(char* name /*out*/) { #if defined(WIN32) // we need to initialize socket lib before gethostname() WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); #endif int error = gethostname(name, BUF_SIZE-1); if (error) { printf("error %d. Exiting\n", error); exit (1); } } void get_host_address(char* name /*in*/, char* addr /*out*/) { struct hostent *hinfo = gethostbyname( name ); if (hinfo != NULL) { unsigned char address[4]; address[0] = hinfo->h_addr_list[0][0]; address[1] = hinfo->h_addr_list[0][1]; address[2] = hinfo->h_addr_list[0][2]; address[3] = hinfo->h_addr_list[0][3]; sprintf( addr , "%u.%u.%u.%u" , address[0] , address[1] , address[2] , address[3] ); } } main() { char host_name[BUF_SIZE]; char dotted_host_address[16]; get_host_name(host_name); get_host_address(host_name, dotted_host_address); } Zitieren
Ozelott Geschrieben 22. November 2006 Autor Geschrieben 22. November 2006 Cool - erstmal danke, werd ich mal in ner ruhigen Minute versuchen. Melde mich. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.