Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Dersom du ikke behøver å motta noe data fra applikasjonene, kan du simpelthen benytte Shell-kommandoen:

Shell "cmd.exe /c net send * hallo"

Dersom slikt derimot er nødvendig, er det også mulig å benytte en BAT-fil som skriver til en midlertidig fil:

 

' Nødvendige API-funksjoner

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

Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

 

Const SYNCHRONIZE = &H100000

Const INFINITE = &HFFFF

 

Public Function ExecuteCode(Code As String, TempFile As String, OutputFile As String) As String

 

    Dim Free As Integer, sOutput As String, pID As Long, hProcess As Long

   

    ' Hent ledig filnummer

    Free = FreeFile

 

    ' Skriv til BAT-filen vi vil benytte

    Open TempFile For Output As #Free

        Print #Free, Code & Chr(34) & OutputFile & Chr(34)

    Close #Free

   

    ' Eksekver BAT-fil

    pID = Shell("cmd.exe /C " & TempFile)

 

    ' Åpne den eksekveret prosess

    hProcess = OpenProcess(SYNCHRONIZE, 0, pID)

   

    ' Vent inntil prosessen er ferdig å kjøre

    If hProcess <> 0 Then

        WaitForSingleObject hProcess, INFINITE

        CloseHandle hProcess

    End If

 

    ' Ledig filnummer

    Free = FreeFile

   

    ' Henter utdata

    Open OutputFile For Binary As #Free

        sOutput = Space(LOF(Free))

        Get #Free, , sOutput

    Close #Free

   

    ' Rydder opp

    Kill TempFile

    Kill OutputFile

   

    ' Returnerner data

    ExecuteCode = sOutput

 

End Function

Den ovennevnte kode kan kjøres således:

MsgBox ExecuteCode("ipconfig > ", "C:\Temp.bat", "C:\Temp.txt")
Endret av aadnk
Lenke til kommentar
Eller en idè om hva som er feil?

7537673[/snapback]

Dersom du ikke fikk noen feilmelding, bør du nok teste om kommandoen i det hele tatt fungerer. Se om du får sendt en melding ved å skrive denne kommandoen direkte i ledetekst. Evt. kan du òg benytte NetMessageBufferSend:

Private Declare Function NetMessageBufferSend Lib _

  "NETAPI32.DLL" (yServer As Any, yToName As Byte, _

  yFromName As Any, yMsg As Byte, ByVal lSize As Long) As Long

Private Const NERR_Success As Long = 0&

Public Function SendMessage(RcptToUser As String, _

  FromUser As String, BodyMessage As String) As Boolean

 

  Dim RcptTo() As Byte

  Dim From() As Byte

  Dim Body() As Byte

 

  RcptTo = RcptToUser & vbNullChar

  From = FromUser & vbNullChar

  Body = BodyMessage & vbNullChar

 

  If NetMessageBufferSend(ByVal 0&, RcptTo(0), ByVal 0&, _

        Body(0), UBound(Body)) = NERR_Success Then

    SendMessage = True

  End If

 

End Function

Private Sub Form_Load()

    'Example created by X-MaD ([email protected])

    'Visit his website at http://www.zolnetwork.com/x-mad

    Dim RetVal As Boolean

    RetVal = SendMessage(txtReciever.Text, txtSender.Text, txtMessage.Text)

End Sub

Husk nå endelig å legge til tekstboksene txtReciever, txtSender og txtMessage. Dersom du får problemer, bør du før øvrig poste evt, feilmeldinger. Jeg vil òg foreslå at du leser noen bøker eller ressurser på nettet knyttet til VB6-programmering, eksempelvis på Wikibooks.

Endret av aadnk
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...