Verhalten von Windows 7 beim beenden von DOS Programmen

Still in use?

Moderator: Moderatoren

Antworten
Lucki
Rookie
Rookie
Beiträge: 3
Registriert: Do, 28. Jun 2012 14:59

Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von Lucki » Do, 28. Jun 2012 15:56

Hallo,

ich habe folgendes Problem: Auf einem neuen Windows 7 SP1 32 Bit PC kann ein älteres Clipper DOS Programm einfach mit dem Schließen Button des Fensters ohne Rückfrage beendet werden. Die Einstellung "Warnung, wenn aktiv" in der Verknüpfung ist richtig gesetzt, wird aber ignoriert.

Bereits getestet:
Als Test eine Verknüpfung auf C:\Windows\System32\edit.com (Der mitgelieferte, alte DOS Editor) erstellt, gleiches verhalten.
_Default.pif angesehen: Einstellung "Warnung, wenn aktiv" ist auch gesetzt.
Kompatibilitätseinstellungen auch wirkungslos.

Ich finde weder mit Suchmaschinen noch in diesem Forum etwas zu diesem Problem. Daher habe ich den Verdacht, dass es sich evtl. um eine ganz tolle "Tunningeinstellung" handelt. Ich habe leider auf die schnelle keine Vergleichsmöglichkeit zu einer frischen 32 Bit Installation von Installations-DVD statt einer OEM Wiederherstellung.

Meine Fragen:
Ist dies das Defaultverhalten?
Wie kann man dies ändern? Key oder Gruppenrichtlinie

Gruß, Lucki

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11224
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von AUGE_OHR » Fr, 29. Jun 2012 1:05

Lucki hat geschrieben:Die Einstellung "Warnung, wenn aktiv" in der Verknüpfung ist richtig gesetzt, wird aber ignoriert.
kein Wunder den seit Win98 werden keine PIF Files mehr verwendet ;)
du könntest ja mal versuchen ob über den Kompatibilitäts-Modus was geht.
gruss by OHR
Jimmy

Lucki
Rookie
Rookie
Beiträge: 3
Registriert: Do, 28. Jun 2012 14:59

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von Lucki » Fr, 29. Jun 2012 15:51

Danke für die Antwort, beides hilft mir leider nicht weiter.

zu 1) Ich denke die PIF Dateien werden bzw. wurden evtl. nicht mehr vollständig ausgewertet. Laut MS Dokumentation wurden diese unter Windows XP definitiv noch verwendet:

http://www.microsoft.com/resources/docu ... x?mfr=true
"PIFs allow you to set default properties for MS-DOS programs, such as font size, screen colors, and memory allocation."
"When you change any settings in an MS-DOS-based program, a PIF is automatically created."

http://www.microsoft.com/resources/docu ... x?mfr=true

"If you want to change the settings of an existing PIF file, locate the shortcut to the program file and right-click it. Click Properties and make the appropriate changes."


Unter Windows 7 wird bei mir ebenso auf dem Desktop eine .pif für ein DOS Programm statt einer .lnk bei einem anderes Shortcut angelegt, das Dateiformat ist Binär, ich kann darin jedoch einige Einstellungen erkennen z. B. die verwendete Schriftart, den Pfad zu CONFIG.NT und AUTOEXEC.NT.

Ich habe inzwischen einige Versuche gemacht, Warnung wenn aktiv wurde auch unter Windows 2000 und XP anscheinend ignoriert. Bei Windows 2000 und XP wird bei mir immer gewarnt, also ist hier das Verhalten genau andersrum.

zu 2) Siehe ersten Post, hatte ich schon versucht.

Am wichtigsten ist für mich im Moment Feedback zu erhalten, ob sich andere Windows 7 Installationen definitiv auch so verhalten. Ich habe es früher schon ein paar mal erlebt, dass Hersteller ihr vorinstalliertes Windows "getunnt" haben und später nur eine Neuinstallation half um auf einen Standard zu kommen.

Gruß, Lucki

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2392
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von Wolfgang Ciriack » Fr, 29. Jun 2012 17:46

Also bei mir (Win7 Ultimae 32bit) ist das auch Default-Verhalten, keine Rückfrage, Fenster wird einfach geschlossen.
Viele Grüße
Wolfgang

Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 111
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von BJelinek » So, 01. Jul 2012 11:22

Hallo Lucki,

ich kenne das auch nicht anders, auch schon bei XP.
Rotes Kreuz Klick und Programm wird beendet.

Folge: Meist defekte Index-Dateien, wenn gerade darin gearbeitet wurde.

Wir haben seit XP das Rote Kreuz mit einem Programm deaktiviert
und hatten damit unsere Ruhe.
Gruß
Bernd

Lucki
Rookie
Rookie
Beiträge: 3
Registriert: Do, 28. Jun 2012 14:59

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von Lucki » Di, 03. Jul 2012 20:38

Hallo,

der Hinweis auf das Verhalten von Windows XP hat mich auf einen neuen Ansatz gebracht, der unter Windows XP funktioniert, leider nicht unter Windows 7.
Ich habe auf einer Windows XP Herstellervorinstallation getestet, die vorher wie ich es will beim beenden, abmelden oder herunterfahren vor Datenverlust warnte:

Wenn man in der Registry HKEY_CURRENT_USER\ Control Panel\ Desktop\ AutoEndTasks von 0 auf 1 geändert:

wird

- beim klicken auf X
- beim System herunterfahren
- beim abmelden
- beim beenden der Anwendung über den Taskmanager

nicht mehr gefragt. Gleichzeitig würden dann auch andere hängende Windowsanwendungen beim herunterfahren automatisch gekillt.

--> Unter XP kann man zwar mit Tools X sperren, es bleiben aber weitere Gefahren für alte Programme insb. Anwender die das System schnell mit geöffneten Programmen herunterfahren.

@BJelinek: War das die Vorinstallation oder hat dieses Verhalten ein Tunningprogramm verursacht. Wenn ja, welches?

Quellen zu AutoEndTasks:
http://www.winfaq.de/faq_html/Content/t ... ip0370.htm
"Wenn man z.B. eine DOS-Anwendung über den Schließen-Button beendet, wird man mit einer Meldung noch einmal darauf hingewiesen und muss mit "Task-beenden" diese Aktion noch einmal bestätigen."

http://technet.microsoft.com/de-de/libr ... 10%29.aspx
http://technet.microsoft.com/en-us/library/cc978604

Microsoft dokumentiert keine Auswirkungen auf DOS Programme.

Zum verhalten dieses Parameters unter Windows 7 ist in diversen Foren zu lesen dass AutoEndTasks=1 z. B. ganz toll gegen einen hängenden Firefox mit 20 Fenstern beim herunterfahren ganz bequem hilft, wie nicht anders zu erwarten ein paar Beiträge weiter Firefox ist Schrott, über Jahre aufgebaute Bookmarksammlung ohne Datensicherung kaputt....

Ich würde gerne eine Lösung ohne Fremdprogramme finden. Vielleicht fällt jemandem ja noch irgendetwas dazu ein, ich bin für jeden Hinweis dankbar und würde meine Lösung auch selbstverständlich mit dem Forum teilen.

Sollte es garnicht anders gehen, welche Tools um zumindest das schließen zu unterbinden gibt es von einer vertrauenswürdigen Quelle?

Danke, Lucki

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11224
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von AUGE_OHR » Di, 03. Jul 2012 22:46

hi,

eine DOS Anwendung wurde ja nie auf Multitasking ausgelegt und "ein" Fenster schliessen ist wie "runter fahren" des PC unter DOS.
früher als der Netzschalter am PC noch ein "echter" Schalter war wurde der niemals zum "runter fahren" benutzt und natürlich kann man an einem "mechanischen" Schalter nichts per Software ausrichten. auch Notebooks, mit Energiesparmassnahmen, gab es nicht ...
ein schnelle Abschalten gab es also nicht deshalb auch IMHO keine Nachfrage nach einer "Lösung".

unter Windows sind "Fenster" Processe, egal ob CMD oder Windows Application. Wenn du was "kontrollieren" willst das einen Process.

du wirst sicherlich dein CMD "unkontrolliert" öffnen d.h. CMD -> ENTER -> prompt
wenn du nun einen Process "kontrollieren" startest könntest du "Information" beim schliessen bekommen und es "verwerfen".

ich denke da an Pablo Botella´s "TRunProcess" wobei ich es nie mit CMD ausprobiert habe.

Code: Alles auswählen

proc main()
local oProcess := TRunProcess():New()
local lActive  := NIL
local dwExitCode

oProcess:cAppName := cPathCombine( GetWinDir(), "notepad.exe" )
oProcess:cParams  := cPathCombine( cAppPath(), "TRunProcess.prg" )
oProcess:wShowWindow :=  oProcess:swMinimize
oProcess:lUseShowWindow := .T.
if oProcess:Start()
   ? "Running " , oProcess:cAppName
   ? "Press ESC to KILL the process. SPACE to abandone"
   while !oProcess:Wait( 1000 ) // Wait 1 seconds
      inkey()
      if LastKey() == 27
         oProcess:Kill(-1)
         exit
      elseif LastKey() == 32
         exit
      end
   end
   dwExitCode := oProcess:GetExitCode(@lActive)
   if dwExitCode == NIL
      ? "Fail retrieving the process exit code"
   else
      ? "Exit Code: " , dwExitCode
      if lActive
         ?? " PROCESS IS STILL ACTIVE. ABANDONED"
      else
         ?? ". TERMINATED"
      end
   end
   oProcess:Release()
else
   ? "Unable to run " , oProcess:cAppName
end
oProcess:Release()
inkey(0)
return
p.s. unter 64bit läuft kein 16bit DOS Programm mehr ... Zeit auf 32bit umzusteigen.
gruss by OHR
Jimmy

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14376
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von brandelh » Mi, 04. Jul 2012 8:42

Hi,

ob man das für ein DOS Fenster (also Clipper) regeln kann weiß ich nicht, aber mit Xbase++ geht das über
XppApplication() - Klassenfunktion der XppApplication-Klasse oder XbpApplication()
xbeP_SystemPowerStatus Der Energiestatus des Systems hat sich geändert.
Slot :systemPowerStatus := {| nChange, uNIL, self | ... } --> nResponse
Methode :systemPowerStatus( <nChange> ) --> nResponse
soweit ich das Verstanden habe, könnte man ein Herunterfahren sogar verhindern (probiert habe ich das noch nicht).
Wenn man dann noch den QUIT und CLOSE vom Hauptfenster abfängt hat man maximale Kontrolle ...
Gruß
Hubert

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7136
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von Tom » Mi, 04. Jul 2012 9:01

Ein DOS-Programm läuft als Tochterprozess (beispielsweise von CMD.EXE) und verfügt nicht über ein eigenes Fenster; davon weiß es auch überhaupt nichts. Es kann insofern auch nicht darauf reagieren - wird der hostende Prozess geschlossen, endet auch der gehostete. Es gibt kein Eventhandling oder ähnliches. Manch ein DOS-Programm schließt sich, indem man CTRL-ALT-Shift-F5 drückt, ein anderes bei ESC und ein weiteres, wenn man "ENDE" in irgendeinem Menü wählt. Ein probates Mittel dafür, auf das Schließen des Hostfensters zu reagieren, gibt es nicht. Es sei denn, man kompiliert das Clipperprogramm, so es sich um ein solches handelt, mit Xbase++. Dann hat man entsprechende Möglichkeit. Dann läuft die App aber auch nicht mehr als Tochterprozess, sondern als eigener.
Herzlich,
Tom

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2527
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von UliTs » Mi, 04. Jul 2012 13:01

Hallo allerseits,

vielleicht sollte man das Thema mal in das Unterforum (Clipper) verschieben, in das es gehört :-) .
-
Hallo Lucki,

was spricht dagegen, das Programm mit xBase++ zu übersetzen?
Vor allem bei älteren Clipper-Programmen ist dies oft viel leichter als gedacht.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14376
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von brandelh » Mi, 04. Jul 2012 13:46

UliTs hat geschrieben:vielleicht sollte man das Thema mal in das Unterforum (Clipper) verschieben, in das es gehört :-) .
da hast du Recht, ich werde es mal verschieben ...
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11224
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von AUGE_OHR » Do, 05. Jul 2012 0:28

Tom hat geschrieben:Es gibt kein Eventhandling oder ähnliches.
wenn ein User "irgendwas" macht wird ein Event ausgelöst.
zumindest das "X" zu "verhindern" ist bekannt : Kiosk-Modus
Tom hat geschrieben:Manch ein DOS-Programm schließt sich, indem man CTRL-ALT-Shift-F5 drückt, ein anderes bei ESC und ein weiteres, wenn man "ENDE" in irgendeinem Menü wählt.
so sollte es sein.

schön auch wenn die Leute den Deckel des Laptop zumachen, ihn mit nach Hause nehmen und sich wundern warum sie nicht mit den (Netzwerk) Daten arbeiten können ;)
Tom hat geschrieben:Ein probates Mittel dafür, auf das Schließen des Hostfensters zu reagieren, gibt es nicht. Es sei denn, man kompiliert das Clipperprogramm...
ohne "extra" geht es wohl nicht, aber Pablo hat mich auf

Code: Alles auswählen

@kernel32:SetConsoleCtrlHandler( fp, .T.)
hingewiesen ... man müsste also ein "C" oder "ASM" Object, mit ot4xb_mini_rt_asm.ch, bei Cl*pper mit einbindet.
der Callback Handler müsste, so lange die Cl*pper Application läuft, den "quit" Event "abfangen".

... ich denke gerade : und was mache ich wenn die Cl*pper Anwendung "hängt" ? auch der Taskmanager "sendet" ja nur den "quit" Event ... :badgrin:
gruss by OHR
Jimmy

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2527
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von UliTs » Do, 05. Jul 2012 9:08

Hallo Jimmy,

beschreib bitte, was der Kiosk-Modus ist und wie man ihn einstellen kann.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17796
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von Manfred » Do, 05. Jul 2012 9:11

Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14376
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von brandelh » Do, 05. Jul 2012 9:14

Man könnte auch ein Xbase++ Programm verwenden, das mit RUNSHELL() DOS Programme nachlädt und gegen das Schließen mit den genannten Methoden schützt ...
Gruß
Hubert

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2527
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von UliTs » Do, 05. Jul 2012 9:17

Wie kompliziert ...
Da setze ich doch lieber auf den gesunden Menschenverstand des Anwenders :-) .

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14376
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von brandelh » Do, 05. Jul 2012 10:02

Solche Kiosk Systeme sind dafür gedacht ein System als "Blackbox Infosystem" einzurichten und sollen sicher stellen,
dass weder Scherzbolde noch Hacker die Geräte manipulieren ... als Firmen Info Terminal oder Registrierkassenersatz
könnte ich mir das vorstellen, arbeiten wollte ich nicht damit ...
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11224
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von AUGE_OHR » Do, 05. Jul 2012 23:31

hi,

es geht ja "nur" um das "abfangen" von Windows Events wie der click auf ein "X" erzeugt.
auch die Console kann man, wie Pablo sagte, per

Code: Alles auswählen

@kernel32:SetConsoleCtrlHandler( fp, .T.)
"irgendwie" wohl handle´n
brandelh hat geschrieben:Man könnte auch ein Xbase++ Programm verwenden, das mit RUNSHELL() DOS Programme nachlädt und gegen das Schließen mit den genannten Methoden schützt ...
schon mal daran gedacht eine Xbase++ Application als "Shell" laufen zu lassen ohne das es die User es "merken" ?
der Desktop ist "nur" ein Listview und wenn der genau so aussieht wie vorher dann "merkt" das kaum jemand.
aber genau da legt der User seine "Sachen" ab ... deshalb braucht er ja ein "System" das ihm hilft
gruss by OHR
Jimmy

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2527
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von UliTs » Do, 05. Jul 2012 23:39

Ich glaube, dass geht völlig am eigentlichen Problem vorbei ....
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 255
Registriert: So, 28. Mär 2010 19:21

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von azzo » Do, 05. Jul 2012 23:45

Bei RemoteDesktop Betrieb ist dieses Thema sehr aktuell.
Man beendet die Sitzung und damit wird das Programm auch beendet.
Mfg
Otto

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14376
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von brandelh » Do, 05. Jul 2012 23:54

Ich meinte, dass man ein Xbase++ Programm z.B. 1x1 Punkt groß erstellen kann, das auf den Close bzw. ShutDown Event (quit ?) wartet.
Soweit ich mich erinnere konnte XbpApplication():... (methode fällt mir jetzt nicht ein) eine Abfrage anzeigen und den ShutDown verhindern.
Dieses Programm kann dann über RunShell auch ein DOS Programm starten, solange das OS das grundsätzlich zulässt.
Gruß
Hubert

UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2527
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von UliTs » Do, 05. Jul 2012 23:56

Hallo Hubert,

wenn Du aber über RunShell das DOS-Programm startest, wird dieses wiederum in einem neuen Fenster laufen. Und dieses Fenster kannst Du doch jederzeit mit Click auf's X schließen und damit das DOS-Programm beenden, oder?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14376
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Verhalten von Windows 7 beim beenden von DOS Programmen

Beitrag von brandelh » Fr, 06. Jul 2012 0:10

Habe ich jetzt nicht ausprobiert ;-)

Ich persönlich habe ja mit DOS Programmen eh nichts mehr am Hut, ich wollte nur Anregungen geben 8)
Gruß
Hubert

Antworten