/ Forside/ Teknologi / Udvikling / VB/Basic / Spørgsmål
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 - kører et program?
Fra : berpox
Vist : 609 gange
150 point
Dato : 16-03-04 10:00

Hej.

Jeg koder i Visual Basic 6.0 - OS: Windows 2000 prof. UK

Problem:
Jeg vil i min VB kode finde ud af om et givent program allerede kører -altså, hvordan får man et true/false svar på om eksempelvis excel.exe er kørende?

Er der nogen der ved hvordan man gør det? Jeg kan nemlig ikke hitte ud af det trods intens søgning på nettet.

mvh Berpox



 
 
Kommentar
Fra : CADmageren


Dato : 16-03-04 11:51

Hej Berpox

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


if FindWindow("XLMAIN",vbnullstring)>0 then
msgbox "Excel kører"
Endif




Kommentar
Fra : berpox


Dato : 16-03-04 13:26

Hej CADmager

OK - det virker fint nok - så længe det er EXCEL. Du lige fortælle mig hvordan du kom fra EXCEL.EXE til at det er XLMAIN der skal kigges efter?

Hvis det nu er et andet program hvor man ikke "bare ved" at det hedder XLMAIN, hvordan finder jeg så ud af hvad vinduet hedder?

mvh Berpox

Accepteret svar
Fra : CADmageren

Modtaget 150 point
Dato : 16-03-04 16:14

Ja se det ved man da bare

Jeg fandt det faktisk i et eksempel, og har selv brugt det til netop Excel.
http://www13.brinkster.com/vincenzog/isxart.asp?idart=37
Tilsyneladende findes der et program der hedder Winspector.

Hvis du kender det fulde vinduesnavn, kan du også bruge FindWindows, og angive det andet argument istedet.

Når jeg selv skal grave i den slags, har jeg med stor success brugt http://www.mentalis.org/index2.shtml til at finde diverse API kald.

/ Michael Christoffersen


Godkendelse af svar
Fra : berpox


Dato : 17-03-04 15:37

Tak for svaret CADmageren.

Det var jo lige det jeg havde brug for - jeg kan nu ikke få det til at virke, for WinSpector har afdækket, at det class name der kan bruges i FindWindow genereres hver gang programmet startes Æv !

Men WinSpector gør sit arbejde helt kanon Det kan knag'me afdække lidt forskelligt må jeg sige...

mvh Berpox

Kommentar
Fra : CADmageren


Dato : 18-03-04 06:54

Tak for pointene. Men jeg mener stadig at du kan bruge FindWindow, hvis du kender det fulde Vinduesnavn.

Alternativt så kig på API-guide fra ovennævnte hjemmeside. Der er et godt eksempel på hvordan du kan "enumerere" over alle kørende processer - lidt i stil med tasklist. Denne kode må kunne bruges til at finde det program du søger.

Det lyder ikke til at det program du checker er et standard windows program, men ellers kunne man prøve med
on local error resume next
dim xApp as object
set xApp=GetObject("",<programnavn>)
if err then
Msgbox "Program kører ikke"
else
msgbox "Program kører
endif

set xApp=nothing


/ Michael Christoffersen


Kommentar
Fra : berpox


Dato : 18-03-04 09:26

Jo - jeg tror nu også det er FindWindow der skal bruges - det er bare lige at hitte ud af hvordan. Vinduesnavnet ændres nemlig også i takt med hvilke "dokumenter" der er aktive i programmet, og ja, det er ikke en MS office application men et CAD program der skal styres vha. bl.a. API, FSO osv....

Så jeg er i fuld gang med at forfølge idéen

Jeg skal lade dig det vide hvis jeg finder løsningen...

mvh Berpox




Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177564
Tips : 31968
Nyheder : 719565
Indlæg : 6408970
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste