| 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, 12: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, 13: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, 13: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, 14: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, 14: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, 15: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, 16: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, 16: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, 16: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, 17: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, 17: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, 17: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, 18: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, 18: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, 19: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, 20: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, 20: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, 20: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, 21: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, 21: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 | 
		 | 
	
	
		  | 
	
	
		 |