Top-Themen

Aktuelle Themen (A bis Z)

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)

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

08.02.2012, aktualisiert 22:11 Uhr, 4047 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 ..
Ähnliche Inhalte
Batch & Shell

Übergabe der Variablen bei Call funktioniert nicht

gelöst Frage von SupidoBatch & Shell2 Kommentare

Hallo, ich komme mit menem untenstehnden Code nicht weiter. In :install bekomme ich nicht die richtigen Variablen ("%Pathdriver%" "%Printername%") ...

Humor (lol)

Call Center

Frage von ukulele-7Humor (lol)10 Kommentare

Ich hatte eben einen eigentlich lustigen Anruf, wenn es mir dieses dummdreiste Getue nicht so auf den Nerv gehen ...

TK-Netze & Geräte

Nummernsignalisierung bei Rufumleitung (Cisco Call Manager)

gelöst Frage von TripleDoubleTK-Netze & Geräte2 Kommentare

Hallo Forum, wir verwenden einen Cisco Call Manager in der Version 10.5.2.11900-3 und haben folgendes Problem: Bei Rufumleitung nach ...

VB for Applications

Call befehl öffnet Makro auswahl

Frage von thomas1972VB for Applications3 Kommentare

Hallo, ich habe ein Modul, welches den Num-Look an/ausschalten kann. Rufe ich per CALL Befehl den aus/an Befehl auf ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 12 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 12 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...