Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB6 - Call mit Variable (Ausgangspunkt)

Frage Entwicklung Basic

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

08.02.2012, aktualisiert 22:11 Uhr, 3987 Aufrufe, 6 Kommentare

Hallo,
mittlerweile läuft meine Anwendung ganz gut. Aber wie es so ist, man möchte sie ja immer optimieren und möglichst universell weiterentwickeln.

Zum Hintergrund:
Ich nutze mein Netbook (oder manchmal mein Notebook) sehr oft unterwegs mit der Bahn. Leider sind die Ressourcen des Akkus nun einmal beschränkt.

Deshalb bin ich der Meinung, bestimmte Dienste, welche unnötig Akkuressourcen verbrauchen, erst einmal auf "Manuell" zu stellen. Starten kann ich sie ja immer noch, wenn ich sie benötige (natürlich auch danach wieder beenden).

Auf die Laufzeit des Akkus hat es sich auf jeden Fall sehr positiv ausgewirkt, auch auf die Geschwindigkeit beim starten. Eigentlich ja auch logisch.

Nun habe ich mir mittels VB6 einfach eine kleine Combobox, welche in der rechten oberen Bildschirmecke erscheint, gebastelt.

Hier kann ich nun festlegen, ob ich nun doch alles was Netzwerk betrifft ein oder ausschalten möchte mit einem kurzen Klick.

Man muss natürlich in der Reihenfolge des Startens bzw. Beendens von Diensten die Abhängigkeiten untereinander beachten. Wichtig ist mir dann natürlich auch, dass ich beim Akltivieren der Netzwerkeigenschaften auch den Virenscanner und die Firewall mit starte.

Funktioniert auch ganz gut.

Nun zur Umsetzung und meinen Fragen:
Mit einem Click-Ereignis innerhalb meiner Combobox durchläuft das Sub natürlich alle If-Abfragen, damit es weiß, was ich gerade möchte. Dazu habe ich die Public-Variable "Dienst" definiert und definiere sie vor jeder If-Abrage neu mit dem Namen des gerade gewünschten Dienstes.

Danach kommt ein Call-Aufruf an ein privates Sub (könnte man natürlich je genauso als Funktion machen, aber ich denke, dass dies eigentlich ohnehin egal ist, oder?).

Im privaten Sub wird nun mittels Case nun geprüft ob der Dienst schon läuft oder nicht. Entsprechend kommt dann halt der Versuch den Dienst zu starten oder zu beenden (es handelt sich je um ein Sub zum beenden bzw. starten).

Nach der Prüfung wird entweder das starten oder beenden ausgelöst, Err ausgewertet (Zähler um 1 hochsetzen), und dann gehts zurück. Und so weiter und so weiter...
Zum Schlus dann halt eine Info ob erfolgreich oder mit wie vielen Fehlern beendet.

Momentan sind es bei manchen Geschichten schon bis zu 18 Diensten, welche ich in der richtigen Reihenfolge starten / beenden möchte.

So, nun zu meinen laienhaften Fragen...

Kann ich beim Aufruf mittels "Call" dem "Call" irgendwie einen Variableninhalt als String übergeben? Ich möchte vor dem jeweiligen If-Anfang einfach die private Subroutine als String übergeben (spart ja dann viel Arbeit, da man viel kopieren kann)

Ich möchte die endgültige exe einfach flexibel halten, damit ich jederzeit was hinzufügen kann ohne VB6 anzuwerfen un die gaze Geschichte neu zu kompilieren. Sehr gerne möchte ich die Ergebnisse dann auch allen anderen (natürlich kostenlos) zur Verfügung stellen. Eigentlich hat ja jeder, der sein Notebook intensiv nutzt das Problem der begrenzten Akkudauer. Hier könnten meine Erfahrungen der notwendigen Dienste (bzw. untereinander abhängigen Dienste) jedem helfen.

Im Prinzip wäre es das Einfachste, wenn man eine relativ flexible exe erstellen könnte, welche sich die Infos aus einer zugehörigen ini-Datei holt.

Und genau hier sehe ich das Problem. Ich muss meine exe so gestalten, dass sie bei der Auswahl eines Eintrags aus der Combobox in die ini-Datei unter dem entsprechenden Eintrag "[WLAN ein]" nachschaut wie viele Positionen darunter erscheinen und diese dann der Reihe nach abarbeitet. Somit könnte jeder einfache Einträge in dieser ini-Datei hinzufügen (natürlich unter dem korrekten Dienstnamen und unter Berücksichtigung der Abhängigkeiten).

Ich denke mal, gerade in der heutigen Zeit, wo wir alle mit unseren Notebooks, welche mit Diensten nur so überladen sind, wäre das keine schlechte Idee?

Aber ich habe ein bissl meine Probleme mit den eben genannten Sachen. Wenn mir jemand dabei helfen könnte wäre es toll.

Ich möchte dann gerne den fertigen zusammengebastelten Code hier als Anleitung für alle posten, da, wie ich denke, sich sehr viele dafür interessieren würden.

Gruß
Torsten
Mitglied: bastla
08.02.2012 um 22:13 Uhr
Hallo TorstenB!

VB6 habe ich nicht zur Verfügung, und Deinen Code kann ich mir auch nur vorstellen, aber als grundsätzliche Überlegung: ini-Datei beim Start des Programms einlesen und die jeweilige Dienstliste in ein Array oder Dictionary packen ...

Grüße
bastla
Bitte warten ..
Mitglied: Tommy70
09.02.2012 um 07:05 Uhr
Hallo,

ich kann mir ungefähr vorstellen was du willst.

1. Ja, du kannst einer Sub eine Variable übergeben.
01.
Private Sub Test (strTest as String) 
02.
	msgbox strTest 
03.
End Sub 
04.
 
05.
Call Test "Hallo"
2. Und die Sache mit der Ini.
Schau dir mal das an.
Dort ist schön beschrieben wie du alle Sectionen und auch alle Werte pro Section aus einer Ini auslesen kannst.
Bitte warten ..
Mitglied: goodbytes
09.02.2012 um 09:26 Uhr
Hallo Tommy,
nein ich meinte eigentlich, dass der Name der Sub als String in einer Variable steckt.

Zur Verdeutlichung:

01.
Dim MeineVariable As String 
02.
 
03.
MeineVariable = "BlaBlaBla" 
04.
 
05.
Call Meine Variable
Aber der Link auf den sehr ausführlichen ini-Artikel war super!

Wenn ich die zu startenden oder zu beendenden Dienste nun in einer ini in den verschiedenen Bereichen habe brauche ich die Sache mit dieser Variablen eigentlich nicht mehr.

@bastla
Also wie das mit ini-Dateien funktioniert ist ja dann klar.
Wie bekomme ich es aber nun hin, dass mir bei Auswahl einer Option der Combobox nun die Anzahl der Einträge und dann auch noch die Inhalte des bestimmten Bereiches zurückgegeben wird. Du sagtest etwas von Array bzw. Dictonary...
Da kenne ich mich aber leider nicht so gut aus.

Ich möchte praktisch in meinem Sub eine For ... Next-Schleife verwenden und benotige dazu die Anzahl der Einträge des entsprechenden Bereiches in der ini als Zähler. Bei jedem Durchlauf soll praktisch meine Variable "Dienst" mit dem nächsten Wert befüllt werden.

Danke euch Beiden schon mal für eure Hilfe !!!

Gruß
Torsten
Bitte warten ..
Mitglied: Tommy70
09.02.2012 um 09:40 Uhr
Zitat von goodbytes:
Hallo Tommy,
nein ich meinte eigentlich, dass der Name der Sub als String in einer Variable steckt.

Zur Verdeutlichung:

01.
> Dim MeineVariable As String 
02.
>  
03.
> MeineVariable = "BlaBlaBla" 
04.
>  
05.
> Call Meine Variable 
06.
> 

Auch das geht. Allerdings muss es die Prozedur mit dem Namen so auch geben. Und genau das wolltest du ja glaube ich vermeiden. Link

Und das andere geht, indem du dir in die Combobox erstmal die ganzen Sectionen der Ini einliest.
Wird dann ein Wert ausgewählt, liest du ensprechend meinem vorhergehendem Link die einzelnen Einträge mittels GetIniString in eine Variable (nennen wir sie strTest) und erstellst anschließend mittels Test=Split(strTest, Chr$(0)) ein Array mit den Einträgen. Die genau Anzahl der Einträge kannst du dann mittels Ubound(Test) abfragen
Aber schau dir Punkt 3 auf der Seite mit den Ini-beispielen an. Das sollte genau das sein was du brauchst.
Bitte warten ..
Mitglied: goodbytes
09.02.2012 um 10:56 Uhr
Hallo Tommy70,
ok, ich werde es dann heute abend mal probieren und gebe dann Feedback.

Danke!

Gruß
Torsten
Bitte warten ..
Mitglied: goodbytes
14.02.2012 um 12:05 Uhr
Hallo,

das Auslesen der Abschnitte der ini-Datei, sowie der Untereinträge und der Werte der Untereinträge funktioniert jetzt bestens.

Hier die Beispiel-ini:

01.
[Eintrag1] 
02.
ErsterEintrag=MeinWert1 
03.
ZweiterEintrag=Mein Wert2 
04.
 
05.
[Eintrag2] 
06.
...
Die benötigten Funktionen "GetIniString" und "GetPrivateProfileString" habe ich entsprechend dem von Tommy geposteten Link in ein Modul gepackt.

Hier nun die Zeilen zum Auslesen der Daten aus der ini-Datei:

01.
Dim Section As String, Key As String, KeyData As String 
02.
 
03.
' Abschnitt 
04.
Section = GetIniString(vbNullString, "", "", INIFile, 32767) 
05.
 
06.
' Eintrag im Abschnitt     
07.
Key = GetIniString(Section, vbNullString, "", INIFile, 32767) 
08.
 
09.
' Wert des Eintrags 
10.
KeyData = GetIniString("", "", vbNullString, INIFile, 32767)
Nun muss ich nur noch Alles in eine Schleife einpacken und das war`s.

Vielen Dank für eure Hilfe und vor Allem für den wertvollen Link !!!

Gruß
Torsten
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Voice over IP
Fax over IP Einrichtung Gateway Call Manager (1)

Frage von mellon zum Thema Voice over IP ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...