Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

PC herunterfahren / asm Frage
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 21.03.2006, 13:55    Titel: PC herunterfahren / asm Frage Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
chutullu



Anmeldungsdatum: 18.10.2005
Beiträge: 77

BeitragVerfasst am: 21.03.2006, 14:08    Titel: Antworten mit Zitat

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 traurig :

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. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 21.03.2006, 14:32    Titel: Ach so Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 21.03.2006, 15:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
chutullu



Anmeldungsdatum: 18.10.2005
Beiträge: 77

BeitragVerfasst am: 21.03.2006, 15:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 21.03.2006, 16:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 21.03.2006, 17:03    Titel: Antworten mit 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..
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 21.03.2006, 17:21    Titel: Antworten mit Zitat

Evtl. geht folgendes:
Code:

SHELL "rundll32.exe User.exe, exitwindows"


Nicht getestet, sollte aber gehen. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 21.03.2006, 17:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 21.03.2006, 18:05    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 21.03.2006, 18:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
chutullu



Anmeldungsdatum: 18.10.2005
Beiträge: 77

BeitragVerfasst am: 21.03.2006, 18:43    Titel: Antworten mit Zitat

Ohne mich an eurem Streit zu beteiligen würde ich die "rundll32" Version vorziehen, einfach und unkompliziert...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 21.03.2006, 19:17    Titel: Antworten mit Zitat

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. durchgeknallt

Nun mal ernsthaft, das habe ich auch schon gesucht, hat niemand eine brauchbare antwort?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
chutullu



Anmeldungsdatum: 18.10.2005
Beiträge: 77

BeitragVerfasst am: 21.03.2006, 19:54    Titel: Antworten mit Zitat

Also auf meinem Rechner (W2K) gibt es keine "Shutdown.exe"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 21.03.2006, 20:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 21.03.2006, 21:07    Titel: Antworten mit Zitat

...und der bewirkt was?
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 21.03.2006, 21:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 21.03.2006, 21:44    Titel: Antworten mit Zitat

Der Zugriff mit Out bewirkt einen recht harten Reset lächeln ä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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
c.m.obrecht



Anmeldungsdatum: 09.03.2006
Beiträge: 377
Wohnort: Hofstetten SO, CH

BeitragVerfasst am: 21.03.2006, 22:10    Titel: Mit WIn98 klappt es nun... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 21.03.2006, 22:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz