/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
[VB6] Shell
Fra : Johnny E Jensen


Dato : 05-03-03 14:14

Hej NG

Jeg skal starte et program fra min klient - programmet kræver en 'Start i'
og dette kan ikke gøres fra Shell '[Path + Program]'

Hvordan klares den så?

/Johnny



 
 
Tomas Christiansen (05-03-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 05-03-03 22:30

Johnny E Jensen skrev:
> Jeg skal starte et program fra min klient - programmet kræver en
'Start i'
> og dette kan ikke gøres fra Shell '[Path + Program]'

Hvad mener du med 'Start i'?

Er det: START /I program.exe
Hvilket burde kunne klares ved at starte en kommando-fortolker op og
lade den udføre 'START /I program.exe'.

-------
Tomas


Johnny E Jensen (05-03-2003)
Kommentar
Fra : Johnny E Jensen


Dato : 05-03-03 23:48

Hej Tomas

Jeg har en dreng på 5 år hvor jeg har lavet en klient til hans pc'er. Når
han klikker på en knap startes en spil fra cd'er liggende på
E:\Lemming\Lemmings.exe - det går også fint med Shell
"e:\lemming\lemmings.exe" men spillet vil hente nogle ikoner fra mappen
"e:\Lemming\icons\gfx.bmp" med path "icons\gfx.exe" spillet forventer at jeg
er placeret på E:\Lemming\ men det er jeg ikke i det øjeblik jeg starter
spillet med shell "E:\Lemming\Lemmings.exe" jeg er jo 'placeret' i
klientens path....

Håber et var forklaring... Ellers se i en genvej... der er en linie 'Start
I' og det er det jeg skal bruge.

/Johnny

"Tomas Christiansen" <toc-nospam-01@blikroer.dk> wrote in message
news:b45q5s$ena$1@news.cybercity.dk...
> Johnny E Jensen skrev:
> > Jeg skal starte et program fra min klient - programmet kræver en
> 'Start i'
> > og dette kan ikke gøres fra Shell '[Path + Program]'
>
> Hvad mener du med 'Start i'?
>
> Er det: START /I program.exe
> Hvilket burde kunne klares ved at starte en kommando-fortolker op og
> lade den udføre 'START /I program.exe'.
>
> -------
> Tomas
>



Tomas Christiansen (06-03-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 06-03-03 00:40

Johnny E Jensen skrev:
> i det øjeblik jeg starter
> spillet med shell "E:\Lemming\Lemmings.exe" jeg er jo 'placeret' i
> klientens path....

Prøv at gå i en kommando-prompt og skriv START /?
Kig på /D, hvor du har mulighed for at angive en sti.
Hvis du kan få det til at virke efer hensigten i en kommando-prompt,
hvor det aktuelle bibliotek er f.eks. Windows/System32, kan du også få
det til at virke i VB's Shell.

-------
Tomas


Preben M. (13-03-2003)
Kommentar
Fra : Preben M.


Dato : 13-03-03 21:05

"Johnny E Jensen" <emde@emde123456.dk> wrote in
news:3e65f819$0$121$edfadb0f@dtext02.news.tele.dk:

> Hej NG
>
> Jeg skal starte et program fra min klient - programmet kræver en
> 'Start i' og dette kan ikke gøres fra Shell '[Path + Program]'
>
> Hvordan klares den så?
>
> /Johnny
>
>

Hej

Principielt er det ikke nogen simpel sag at starte et andet program fra
VB6, og derefter vente til det er færdig.

Jeg har i sin tid ledt højt og lavt uden at finde de vises sten, men jeg
har fundet en metode, der virker, dog uden konsolvindue.

Metoden gør brug af følgende definitioner:

Public Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Public Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const STATUS_PENDING = &H103&

Når jeg så har dannet min batch af kommandoer: <input> der skal udføres
gøres det ved hjælp af følgende 2 sub's:

Private Sub CommandClient(strBatchFile As String)
Dim strBatchCommand As String

Dim objFileSysObj As Object ' Generel
Filesystem Obj.
Set objFileSysObj = CreateObject("Scripting.FileSystemObject")

If objFileSysObj.FileExists(strBatchFile & ".Log") Then
objFileSysObj.DeleteFile strBatchFile & ".Log", True
End If

Set objFileSysObj = Nothing

strBatchCommand = "CMD /C CmdClient.Exe" & " -file " & strBatchFile &
" > " & strBatchFile & ".Log"
RunShell (strBatchCommand)

Kill strBatchFile
End Sub

Public Sub RunShell(cmdline As String)
Dim hProcess As Long
Dim ProcessId As Long
Dim exitCode As Long
Dim wshshell As Object

ProcessId = Shell(cmdline, vbMinimizedFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId)

Do
Call GetExitCodeProcess(hProcess, exitCode)
DoEvents
Loop While exitCode = STATUS_PENDING

Call CloseHandle(hProcess)

MsgBox "Opdatering: " & vbCrLf & cmdline & vbCrLf & "Er afsluttet."
End Sub

Den egentlige kommando, jeg vil udføre er følgende:

CMDCLIENT.EXE -file <input> > <output-log>

Så der er jo rig mulighed for andre ting.


NB: Jeg kører Win200/XP/NT. Under Win9x skal "CMD /C" erstattes med
"Command /C", så vil det sandsynligvis virke.


Tomas Christiansen (13-03-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 13-03-03 23:16

Preben M. skrev:
> strBatchCommand = "CMD /C CmdClient.Exe" & " -file " & strBatchFile
&
....
> NB: Jeg kører Win200/XP/NT. Under Win9x skal "CMD /C" erstattes med
> "Command /C", så vil det sandsynligvis virke.

For at udelukke sandsynligheder eller usandsynligheder, bør man altid
bruge værdien i environment variablen COMSPEC til at starte en ny
kommandofortolker.

Så virker det sørme også i fremtidige Windozer, hvor det måske hedder
CMND eller noget helt fjerde.

-------
Tomaè

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste