Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
c.m.obrecht

Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 21.03.2006, 13:55 Titel: PC herunterfahren / asm Frage |
|
|
Gibt es einen Befehl, der den Computer herunterfährt (win 98 und XP)?
Ausserdem würde mich interessieren ob der Inline-Assembler viele Befehle nicht kennt, z.B. Funktionen int 21H usw. und überall wo "H" nach einer zahl steht erscheint eine Fehlermeldung.
Vielen Dank |
|
Nach oben |
|
 |
chutullu
Anmeldungsdatum: 18.10.2005 Beiträge: 77
|
Verfasst am: 21.03.2006, 14:08 Titel: |
|
|
Was das reeboot betrifft so müsste das das richtige sein
Zitat: | INT 15 - HUNTER 16 - SET INT 72h VECTOR
AH = 87h
DS:DX = new service routine
Desc: set the INT 72h vector which is called in 2 cases:
- when the machine is about to turn off or reboot, INT 72h is called
with AH=0
- when the machine is powering up INT 72h is called with AH=01h
Note: the actual INT 72h vector must also be changed with INT 21/AH=25h |
und in Freebasic sind folgende Befehle nicht erlaubt, also ist das obensthende hinfällig :
Zitat: | cli
clts
hlt
in
ins
int
invd
invlpg
lgdt
lidt
lldt
lmsw
ltr
mov to/from CRn, DRn, TRn
out
outs
rdmsr
rdpmc
rdtsc
sgdt
sidt
sldt
smsw
sti
str
wbinvd
wrmsr |
Am besten Du schreibst Dir ne' kleine reboot.EXE die Du aus dem Basicprogramm aufrufst.  |
|
Nach oben |
|
 |
c.m.obrecht

Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 21.03.2006, 14:32 Titel: Ach so |
|
|
Das geht tatsächlich nicht, der Befehl int . Die Fehlermeldung betrifft nur die Zahlen mit dem H die danach kommen.
Wie ruft man aus einem FreeBasic-Programm einm anderes EXE auf, welches ausgeführt und das Programm danach wieder fortgeführt wird?
Danke.
Zu Herunterfahren könnte es auch ein BASIC-Befehl sein, muss nicht zwingend asm. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 21.03.2006, 15:26 Titel: |
|
|
man kann irgendwie mit rundll32.exe den shutdown-befehl aus ner winapi-lib über SHELL aufrufen, benutz am besten ma die Forensuche.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
chutullu
Anmeldungsdatum: 18.10.2005 Beiträge: 77
|
Verfasst am: 21.03.2006, 15:51 Titel: |
|
|
mit WSH müsste es noch gehen,
leider wird unter freebasic "call absolute" nicht mehr unterstützt - da hättest Du den Interruptaufruf als Maschinencode übergeben können... |
|
Nach oben |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 21.03.2006, 16:59 Titel: |
|
|
Einfach "SHELL SHUTDOWN -t 01" oder so...MisterD wollte nur noch mal rtfm sagen.
Wenn du die restlichen Parameter für Shutdown wissen willst: Start->Ausführen->CMD->Shutdown. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 21.03.2006, 17:03 Titel: |
|
|
Stimmt nicht, die Variante funktioniert nur unter WinXP, er hat nach XP und 98 gefragt, da muss man dann auf die rundll-variante zurückgreifen oder man bindet die funktion einfach direkt ein, weiß nur den namen eben nicht. Dein geflame kannste dir übrigens sparen.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 21.03.2006, 17:21 Titel: |
|
|
Evtl. geht folgendes:
Code: |
SHELL "rundll32.exe User.exe, exitwindows"
|
Nicht getestet, sollte aber gehen.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 21.03.2006, 17:49 Titel: |
|
|
user.exe? Ich würd auf user32.dll tippen..
ah wie wärs damit:
Code: | Declare Function ExitWindowsEx Alias "ExitWindowsEx" (ByVal uFlags As Integer, ByVal dwReserved As Integer) As Integer
'Programmzeugs
'und dann zum beenden einfach:
ExitWindowsEx(8,0) '8 => shutdown&power off ; 0 => kein grund angegeben |
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shutdown/base/exitwindowsex.asp _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 21.03.2006, 18:05 Titel: |
|
|
Zitat: | Stimmt nicht, die Variante funktioniert nur unter WinXP, er hat nach XP und 98 gefragt, da muss man dann auf die rundll-variante zurückgreifen oder man bindet die funktion einfach direkt ein, weiß nur den namen eben nicht. Dein geflame kannste dir übrigens sparen.. |
Also, entweder du ignorierst mich, oder du gehst auf meine beiträge ein, beides geht nicht. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 21.03.2006, 18:36 Titel: |
|
|
ich ignoriere dein rumgemowle und deine probleme.. wenn du mist erzählst darf ich das doch wohl noch korrigieren.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
chutullu
Anmeldungsdatum: 18.10.2005 Beiträge: 77
|
Verfasst am: 21.03.2006, 18:43 Titel: |
|
|
Ohne mich an eurem Streit zu beteiligen würde ich die "rundll32" Version vorziehen, einfach und unkompliziert... |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 21.03.2006, 19:17 Titel: |
|
|
Also... Ich würde es vorziehen einen PRINT Befehl zu nutzen, der schreibt:
"Bitte PC jetzt herunterfahren XD"
Ansonsten:
Shell "Shutdown.exe -t"
so, bitte sehr.
PS: einfach eine wichtige windowsdatei im ram poken ginge auch... ist aber ein "harter" shutdown.
Nun mal ernsthaft, das habe ich auch schon gesucht, hat niemand eine brauchbare antwort? |
|
Nach oben |
|
 |
chutullu
Anmeldungsdatum: 18.10.2005 Beiträge: 77
|
Verfasst am: 21.03.2006, 19:54 Titel: |
|
|
Also auf meinem Rechner (W2K) gibt es keine "Shutdown.exe" |
|
Nach oben |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 21.03.2006, 20:32 Titel: |
|
|
Schaut doch mal in die QB MonFAQ da steht sowas recht gut drin wie man per shell32 und co den Rechner schonend herunter fährt. Und nur nochmal zum
Hinweiß: Shutdown gibt es nur bei XP!
was auch sehr gut zum schocken ist Out &H64, &HFE ist ein direkter zugriff auf den Keyboard Controller. _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 21.03.2006, 21:07 Titel: |
|
|
...und der bewirkt was? _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 21.03.2006, 21:37 Titel: |
|
|
MisterD hat Folgendes geschrieben: | ich ignoriere dein rumgemowle und deine probleme.. wenn du mist erzählst darf ich das doch wohl noch korrigieren.. |
Hm..du scheinst gerade echt schlecht drauf zu sein. Soll ich dir mal sagen, was mir da immer hilft? Fahr rad. Besonders bei dem Wetter sind da deine Aggressionen ganz schnell weg.
Also entweder, du iggnorierst mich(was du nebenbei auch geschrieben hast), oder nicht. Mischversion gibts nicht, da sie sinnlos ist. |
|
Nach oben |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 21.03.2006, 21:44 Titel: |
|
|
Der Zugriff mit Out bewirkt einen recht harten Reset ähnlich STRG+ALT+ENTF unter DOS _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
 |
c.m.obrecht

Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 21.03.2006, 22:10 Titel: Mit WIn98 klappt es nun... |
|
|
Ich habe folgendes, was unter Windows 98 funktioniert:
shell "rundll32.exe shell32.dll,SHExitWindowsEx 1"
Unter Win XP tut sich allerdings nichts, ausser einer Fehlermeldung dass die Funktion in shell32.dll nicht gefunden werden kann.
Die anderen Varianten funktionierten bis jetzt nicht; shutdown.exe existiert anscheinend ebenfalls nicht. Werde aber gelegentlich sämtlichen hier angegebenen Varianten testen (vielen Dank!); habe jetzt gerade zu wenig Zeit. |
|
Nach oben |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 21.03.2006, 22:47 Titel: |
|
|
du könntest mal probieren den direkten Pfad hinzusetzten(eventuell auch über Umgebungsvariabeln) fals das laufende Betriessystem nicht auf C: liegt.
Für Windows 2000 sollte dann auf XP gleich sein in etwas so(ungetestet)
Code: | shell "%windir%\system32\rundll32.exe %windir%\system32\shell32.dll,SHExitWindowsEx 1" |
_________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
 |
|