Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 16.10.2005, 17:48 Titel: Prozess/Programm beenden (Windows) |
|
|
Hi Leute!
Wie einige von euch sicher wissen bin ich sogut wie garnicht bewandert in Sachen WinAPI und Co.
Aber zum Glück hab ich ja euch Wie kann ich z.B. den FireFox-Browser-Prozess durch mein FB-Programm beenden?
Und (fast noch wichtiger) geht das auch mit einer laufenden DFÜ-Verbindung?
Ziel der Sache ist, dass sich mein Computer einmal die Woche in der Nacht (über Bios geregelt) von selber hochfährt und anschließend ein Komplett-Backup durchführt, alle nötigen Programme updatet und diese dann wieder nacheinander abknallt. Sprich sie müssen nicht unbedingt geordnet beendet werden. Es muss nur eine bestimmte Reihenfolge eingehalten werden
Grüßle,
Mecki
PS: Hab W2k SP4 und (wobei das wohl kaum wichtig ist..) FireFox 1.5 Beta 2 _________________ » Yodl.de: So sucht man gestern.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 16.10.2005, 18:25 Titel: |
|
|
Hi Mecki!
So sollte das Trennen der Verbindung gehen, aber FreeBasic scheint da irgendeine Definition oder sowas für die DLL zu fehlen. Vielleicht muss man ähnlich zur INPOUT32 auch zu dieser WinAPI DLL erst eine FreeBasic-kompatible Version erstellen?!
Code: | Declare Function RasEnumConnections Lib "rasapi32.dll" _
Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As _
Long, lpcConnections As Long) As Long
Declare Function RasHangUp Lib "rasapi32.dll" Alias _
"RasHangUpA" (ByVal hRasConn As Long) As Long
Declare Function GetStr(Feld() As Byte) As String
Const RAS_MaxEntryName = 256
Const RAS_MaxDeviceType = 16
Const RAS_MaxDeviceName = 32
Const Max_Fill = 96
Type RASType
dwSize As Long
hRasCon As Long
szEntryName(RAS_MaxEntryName) As Byte
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS_MaxDeviceName) As Byte
dwFill(Max_Fill) As Byte
End Type
'Main
Dim x%, y%, RAS(255) As RASType
Dim lg&, lpcon&, Result&
RAS(0).dwSize = 412
lg = 256 * RAS(0).dwSize
Result = RasEnumConnections(RAS(0), lg, lpcon)
If lpcon <> 0 Then
PRINT "Aktive Verbindungen: "
For x = 0 To lpcon - 1
PRINT "=> "; GetStr(RAS(x).szEntryName());
PRINT " "; RAS(x).hRasCon;
PRINT " "; GetStr(RAS(x).szEntryName());
PRINT " "; GetStr(RAS(x).szDeviceName());
PRINT " "; GetStr(RAS(x).szDeviceType())
Next x
Else
PRINT "Keine DFÜ-Verbindungen aktiv!"
End If
Dim hRasConn&
FOR x%=LBOUND(RAS) TO UBOUND(RAS)
hRasConn = RAS(x%).hRasCon
Result = RasHangUp(ByVal hRasConn)
NEXT x%
PRINT "Alle Verbindungen getrennt."
SLEEP: END
Function GetStr(Feld() As Byte) As String
Dim x%, y%, aa$, bb$
For x% = 0 To UBound(Feld)
bb$ = Chr$(Feld(x%))
If bb$ <> Chr$(0) Then
aa$ = aa$ + bb$
Else
Exit For
End If
Next x%
GetStr = aa$
End Function |
Das Anwendung-Beenden geht auch. Dazu hab ich hier ein Beispiel geschrieben: http://home.arcor.de/ssteiner/download/FBKillTask.zip
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 17.10.2005, 10:24 Titel: |
|
|
Hallo Sebastian,
dein Hinweis auf die inpout32.dll brachte mich auf folgende Idee:
Code: | 'Deklarationen
Dim library As Integer
Dim RasEnumConnections as Function (lpRasCon As Any, lpcb As Long,_
lpcConnections As Long) As Long
Dim RasHangUp As Function (ByVal hRasConn As Long) As Long
'DLL laden
library = DyLibLoad("rasapi32.dll")
'Fehlerbehandlung
if(library = 0) Then
Print "Fehler: rasapi32.dll nicht gefunden."
Sleep
End 1
end If
'Inhalt von derdll deklarieren
RasEnumConnections = DyLibSymbol(library, "RasEnumConnectionsA")
RasHangUp = DyLibSymbol(library, "RasHangUpA")
...
..
. |
Konnte ich aber nicht ausprobieren, also nur ein Hinweis wie man in FB ohne def-Datei an die Funktionen einer DLL kommt.
Zur rasapi32.dll habe ich noch folgenden Hinweis gefunden:
Zitat: | Der Tipp funktioniert nur, wenn auch eine DFÜ-Verbindung oder eine äquivalente Verbindung im System eingerichtet ist, da erst zu diesem Zeitpunkt die Datei RASAPI32.DLL installiert wird. |
Gruß
Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
|
|