Ga naar inhoud

[VB6.0] ActiveX, maar dan dynamisch


Aanbevolen berichten

Hoi, Ik wil natuurlijk weer eens iets wat niet kan, maar toch vraag ik het maar even. Ik ben een programma aan het maken dat het volgende doet: - Controleer of MSN Messenger is geïnstalleerd en als ie dat niet is moet je "mmssetup.exe /Q" starten. Wacht tot de installatie klaar is (met een Do-Loop waarin een DoEvents staat en die controleert of msmsgs.exe bestaat). - Vervolgens in het register een paar instellingen doen, zodat ie automatisch is ingesteld de proxyserver te gebruiken. Nu moet ik er nog inbouwen dat ie hierna automatisch aanmeldt. Dat is wel te doen via een ActiveX (in references), maar als ik die aanvink krijg je problemen als MSN nog niet is geïnstalleerd. En als je het niet doet, dan kun je 'em niet aansturen. Hoe ik het nu doe: na de installatie (of geen installatie) wordt een tweede, onzichtbare programma gestart die het aanmelden doet en via DDE terugstuurt dat het aanmelden is voltooid. Maar dit is niet de meest processor-vriendelijke methode. Weet iemand hoe ik dynamisch een reference kan maken of zo? Groet, Phedny
Link naar reactie
Dat wachten op het einde van die installatie in een loop is niet zo netjes. Daar bestaan mooie api-funkties voor die je keurig vertellen of een process nog in de lucht is. Zoiets dus. [code:1:d324cc6410] 'Declaraties van de api en bijbehorende constanten. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Const PROCESS_INFINITE As Long = &HFFFF Private Const PROCESS_SYNCHRONIZE As Long = &H100000 'Met deze knop start je het programma Private Sub cmdStart_Click dim lngId as long dim strCommandLine as string 'Geef hier aan welk programma je wilt starten. strCommandLine = 'je uit te voeren commando 'Start programma en pik Id op. lngID = Shell(strCommandLine, iWindowStyle) 'Goed gestart? (lngID <> 0), dan wachten tot programma klaar is. If lngID <> 0 Then Call WachtOpProcessEinde (lngID) End if End Sub Private Function WachtOpProcessEinde(lngID As Long) Dim lngHandle As Long lngHandle = OpenProcess(PROCESS_SYNCHRONIZE, 0, lngID) If lngHandle <> 0 Then Call WaitForSingleObject(lngHandle, PROCESS_INFINITE) Call CloseHandle(lngHandle) End If End Function [/code:1:d324cc6410] Wat betreft dat dynamisch een reference maken moet je volgens mij met CreateObject een heel eind kunnen komen. In de MSDN kun je hier het een en ander over vinden. Voorbeeldje [code:1:d324cc6410] Private Sub Command1_Click() Dim MyApp As Object Set MyApp = CreateObject("Excel.Application") Call Msgbox (cstr(MyApp.Version)) Set MyApp = Nothing End Sub [/code:1:d324cc6410] _________________ Met vriendelijke groeten, Laurens "Leven is meervoud van lef" [ Dit bericht is bewerkt door: Laurens op 2002-04-04 08:34 ]
Link naar reactie
??? Als MSN volgens de COM specificaties is gebouwd moet het toch gewoon via CreateObject te gebruiken zijn? Jammer, ik kan dit niet uitproberen want ik heb hier geen MSN. Probeer je probleem eens te droppen op VBWorld. De echte keien laten zich daar al een tijdje niet meer zien (onze NetSweeper houdt me tegen :grin: :grin:) maar het nivo is nog steeds hoog genoeg om met oplossingen te komen voor de meeste problemen.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...