CPU-Kern zuweisen (VB6)
lima-city → Forum → Programmiersprachen → Basic
ansatz
ausprobieren
basteln
befehl
code
double
eintragen
kern
klingen
korrigieren
liste
problem
programm
prozessor
shell
sprechen
start
studio
wahl
windows
-
Hätte da mal ne Frage, zu Windows-Prozessen. Und zwar habe ich einen Duo Core Prozessor und verteile daher auch immer die wichtigen Prozesse im Taskmanager auf die einzelnen Kerne. Windows lässt einen neuen Prozess aber Standardmößig auf beiden Kernen laufen und das ständig zu korrigieren nervt irgendwann. Yetzt kam mir aber eine Idee, und zwar hängen sich Firewalls ya irgendwie ins System, um vor dem endgültigen Start eines Prozesses, mir die Wahl zu lassen, ob er wirklich gestartet werden soll oder nicht (dieses Learning-Mode Zeugs, was manche FWs haben) und nun wollte ich ebenfalls ein solches Programm schreiben, dass mich aber dann zunächst fragt, auf welchem Kern ein Prozess gestartet werden soll.
Da habe ich nun 2 Probleme:
1. Wie bekomme ich meinen Auswahldialog, vor einen Prozessstart ? (evtl RunDLL patchen??)
2. Wie weise ich einem Prozess einen Kern zu ?
Wäre super, wenn ihr mir da helfen könntet.
Liebe Grüße
- VampireSilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
das ganze mit VB zu realisieren dürfte schwierig werden, meiner (wenigen) erfahrung nach ist das ganze nicht sehr systemnah, weswegen ich dann auch C gelernt habe.
zumindest eine in C/C++ geschriebene DLL wird da wohl nötig sein, ob bereits vorhanden oder selbst zu schreiben sei dahingestellt.
"zu fuß" wird dir das in VB wohl nicht gelingen.
(ich lasse mich natürlich auch gern eines besseren belehren ) -
Ohye, ne also extra yetzt nur dafür C++ lernen, ne danke. ^^
Sich vor nen Prozessstart zu klemmen stelle ich mir auch wirklich schwierig vor, aber kann ich nicht wenigstens den CPU in VB zuweisen ?
Dann würde ich einfach ne Liste mit den Namen der Prozesse anfertigen und lasse ihn alle paar sekunden über die hWnd prüfen, ob yeder Prozess auf dem richtigen Kern läuft. Dann muss ich zwar alles von Hand eintragen, aber allzu oft kommen zum Glück keine neuen Prozesse dazu.
Liebe Grüße
- VampireSilence -
Unter Windows Vista wurde dem Befehl "start" ein neuer Parameter hinzugefügt, der sich "affinity" nennt.
Damit kann man über die Eingabeaufforderung ein Programm einer bestimmten CPU zuweisen, bevor es gestartet wird.
Du kannst dir also in VB 6 ein Programm basteln, das genau diesen Befehl aufruft:
cmd.exe /c "start "" /affinity 1 "C:\Programme\Windows Media Player\wmplayer.exe""
Zu beachten für /affinity, da diese als Hexadezimalzahl gelesen wird:
1 uses CPU0 2 uses CPU1 3 uses CPU0 and CPU1 4 uses CPU2 5 uses CPU2 and CPU0 6 uses CPU2 and CPU1 7 uses CPU2, CPU1, and CPU0 8 uses CPU3 9 uses CPU3 and CPU0
Somit in VB 6:
Dim result As Double Dim path As String path = "C:\Programme\Windows Media Player\wmplayer.exe" result = Shell("cmd.exe /c " & """" & "start " & """" & """" & " /affinity 1 " & """" & path & """" & """", vbNormalFocus) If result <> 0 Then MsgBox "successful"
Ansonsten hast du mit VB 6 keine Möglichkeit, weil es nicht systemnah ist, wie auch bereits erwähnt wurde.
Beitrag zuletzt geändert: 2.3.2009 11:48:18 von cbhp -
Liegt vor allem daran, dass bei erscheinen von VB6 noch niemand über Mehrkern Prozessoren bescheid wusste.
Anders VB.NET. Dort ist das ganze implementiert. Es sprechen auch viele andere Gründe dafür auf den "Net-Zug" aufzuspringen.
Beitrag zuletzt geändert: 2.3.2009 11:44:47 von five-three-nine -
Ich hab leider kein Vista, somit wird dieses "Start" wohl nicht bei mir funktionieren, oder ?
Auf VB.NET umzusteigen, könnte ich mir sogar noch vorstellen, aber was sind da eigtl die Hauptunterschiede zu VB6 ? Und wie könnte ich darin dieses Programm verwirklichen ?
Edit: Hab mal gegoogelt und bin auf dieses "Visual Studio 2008 Express" gestoßen, ist das das richtige ?
Edit2: Weiss das echt keiner ?
Liebe Grüße
- VampireSilence
Beitrag zuletzt geändert: 6.3.2009 5:57:21 von vampiresilence -
Wo liegt bitte das Problem, es eifnach schnell mal auszuprobieren?
Wenn es funktioniert ist es schön., wenn nicht wirft es einen Fehöler und wir suchen gemeinsam einen anderen Ansatz, oder duskutieren ob VB6 soetwas überhaupt beherrscht. -
vampiresilence schrieb:
Edit: Hab mal gegoogelt und bin auf dieses "Visual Studio 2008 Express" gestoßen, ist das das richtige ?
Edit2: Weiss das echt keiner ?
Liebe Grüße
- VampireSilence
Doch ich, ist das richtige. Ich prog auch in .Net (aber C#), ist echt zu empfehlen, da es viele lustige Dinge kann z.B:
- Du kannst eine Programmklasse in VB und eine in C# schreiben (praktisch, wenn mehrere Leute an einem Projekt arbeiten)
- Du kannst mit den .Net Klassen auf viele Dinge viel einfacher zugreifen
-
adrians schrieb:
Wo liegt bitte das Problem, es eifnach schnell mal auszuprobieren?
Wenn es funktioniert ist es schön., wenn nicht wirft es einen Fehöler und wir suchen gemeinsam einen anderen Ansatz, oder duskutieren ob VB6 soetwas überhaupt beherrscht.
Ähm ich weiss grad echt nicht, wieso du so genervt reagierst. Das Programm hab ich ya yetzt - das hab ich auch ausprobiert - aber das war nun auch nicht die einzige Frage in meinem Beitrag. Und zumindest das mit dem Kern, is wirklich einfach noch zu hoch zu für mich. Nichtmal in Entwicklerforen findet man was gescheites. Auch dieses ganze Klassensystem ist vollkommen neu für mich - falls es das in VB6 überhaupt schon gab - ich habs nie genutzt.
Und das mit der "Start.exe" kann ich nich ausprobieren, da ich die nich habe und auch niemanden kenne, der Vista besitzt UND mir diese Datei mal eben zukommen lassen könnte.
Liebe Grüße
- VampireSilence -
Es tut mir Leid, wenn das ganze genervt rüberkam.
Das war alles andere, als meine Intention. Aber das Forum ist nunmal für Hilfe zur Selbsthilfe gedacht. Und kurz etwas ausprobieren kann jeder, nicht wahr?
Wie gesagt: Es sollte nicht böse klingen, oder ähnliches. Falls es so rüberkam, tut es mir leid.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage