PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VB: Anwendung mit niedriger priorität starten!



wArRiNgO
17.05.2004, 19:51
Hi Leute!

Möchte mit VB ein kleines Programm schreiben, welches mir erlaubt Anwendungen mit niedriger Priorität starten zu lassen. Da ich aber bisher in VB nur die Grundzüge kennengelernt hab, und kein Buch o.ä. da habe, weiß ich nicht so recht wie ich das verwirklichen kann.

Hoffentlich kann mir jemand helfen.

MfG

Warri

BoMbY
18.05.2004, 12:38
Hallo,

um eine Anwendung mit einer frei wählbaren Priorität zu starten, benutzt Du am besten die Windows-API-Funktion 'CreateProcess': http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp

Frag mich jetzt aber bitte nicht wie man die in VisualBasic anspricht.

m.f.g.
BoMbY

wArRiNgO
18.05.2004, 14:14
Das ist schonmal gut, nur ist da jetzt wieder die Frage des Einbindens in Visual Basic :)

TiKu
18.05.2004, 14:31
Private Type STARTUPINFO
cb As Long
' Die folgenden 3 Member können nicht As String definiert werden, weil VB
' die Member nach Datentypen sortiert und das API dadurch eine fehlerhafte
' Struktur erhalten würde.
' Einfach lpDesktop = StrPtr("bla") statt lpDesktop = "bla" verwenden
lpReserved As Long
lpDesktop As Long
lpTitle As Long
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
' selbes Problem: wir müssen die 2 Integers zusammenfassen
' WORD wShowWindow;
' WORD cbReserved2;
wShowWindowAndReserved2 As Long
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type

Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type

Private Declare Function CreateProcess Lib "kernel32.dll" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, ByRef lpStartupInfo As STARTUPINFO, ByRef lpProcessInformation As PROCESS_INFORMATION) As Long
Soweit die (hoffentlich richtige) Deklaration des ganzen Spaßes. Den Rest überlasse ich Dir und Google.;)

Kickin_Eagle
18.05.2004, 23:22
Wenn ich deine Anfrage richtig verstehe, müsste dir auch das hier helfen:
(zumindest unter WinXP):

sub Programm()
shell "start /LOW c:\windows\calc.exe"
end sub

Zum test:
Versuch mal Start-Ausführen-cmd [enter]
gib dann in dem Command-Fenster das hier ein: "start /LOW calc.exe"
und mach den Taskmanager offen. Der Taschenrechner läuft jetzt als Idle !

wArRiNgO
19.05.2004, 20:37
Sollte für Win2k sein, funktioniert aber leider nicht. "Start" wurde nicht gefunden. Muss ich das andere mal probieren.

Thx schonmal für die deklaration, da ich aber noch recht am anfang bin, muss ich mich wohl erstmal dransetzen wie es jetzt weiter geht. da hab ich nämlich derzeit noch keine Ahnung :)

Sebastian132
22.05.2004, 13:47
In "Ausführen" kann es ja auch gar nicht funktionieren, du musst es in der DOS-konsole machen!!

Kickin_Eagle
22.05.2004, 22:31
Original geschrieben von Sebastian132
In "Ausführen" kann es ja auch gar nicht funktionieren, du musst es in der DOS-konsole machen!!

So isses !

c:\>start /LOW calc.exe [enter]

wArRiNgO
25.05.2004, 15:46
Na löl ich bin auch blöd :D

Jetzt muss ich das nur noch hin bekommen, wie ich bei VB die Pfadangabe mache. Praktisch das Datei->Öffnen was man kennt.

Hat da einer nen Tip??

Edit: Ich seh eh grad das VB dieses start /low gar nicht annimmt :(

TiKu
25.05.2004, 15:57
Original geschrieben von wArRiNgO
Jetzt muss ich das nur noch hin bekommen, wie ich bei VB die Pfadangabe mache. Praktisch das Datei->Öffnen was man kennt.Willst Du den CommonDialog "Datei öffnen" anzeigen, mit dem man eine Datei wählen kann? Da gibt's zum einen das MS CommonDialog Control, welches aber nicht unbedingt zu empfehlen ist. Zum anderen gibt's da im Web diverse Klassen, die das per API lösen. Bspw. die hier (http://www.timosoft-software.de/download/stuff/CD.zip) (von mir).

wArRiNgO
26.05.2004, 14:31
Ich habs anders gemacht. Batch Datei in den Ordner, verknüpfung gemacht,symbol geändert und siehe da, es geht :) und zwar bedeutend einfacher!!