shutdown
-
ne sry, lag nich ganz am thread.
Da sich der thread beendet hat, hat sich das fenster wohl gleich wieder mitbeendet.
Mit einer endlos-sleep-schleife kommt das fenster dann...jedoch hängen sich beide fenster auf, also werden nicht neu gezeichnet
-
jghj schrieb:
danke.
da hab ich gleich noch 2 fragen.
1. Wie kann ichs am schönsten machen, dass ein text (mit TextOut) sich immer ändert (also dasses nicht übereinander geschrieben wird)
2. Wie kann ich meinem fenster ein icon geben (wie in messageboxen MB_ICONEXCLAMATION)?1. Nimm ein STATIC-Control
2. WM_SETICONjghj schrieb:
3.und warum kann ich kein neues fenster mit CreateWindow() in einem Thread öffnen?
kannst du!
jghj schrieb:
Mit einer endlos-sleep-schleife kommt das fenster dann...jedoch hängen sich beide fenster auf, also werden nicht neu gezeichnet

Sleep() friert ja auch einen gesamten Thread ein. Vielleicht sagste mal, was für Threads du hast, und in welchem du welches Fenster öffnen willst.
-
schau mal, so mache ich das: vermute mal du nutzt virtualdub zum aufnehmen.
#include "stdafx.h"
#include <windows.h>
#include <winuser.h>
#include <stdlib.h>bool Down()
{//Windows NT
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);return ExitWindowsEx(EWX_POWEROFF ,0);
}
int main()
{
Down();
return 0;
}
-
ich wusste garnicht dass es verschiedene threads gibt -.-
also hab einfach die thread funktion mit DWORD WINAPI threadname(PVOID param);
deklariert, und geöffnet mit CreateThread();
und in dem Fall friert Sleep() sogar beide threads ein, obwohl ich das nicht so ganz blicke.
Und was is ein STATIC control bzw. wie benutz und deklarier ichs?
und WM_SETICON wo soll das rein?
sry, bin in der visuellen programmierung noch relativ neu...
-
Wenn du normale Fenster verwenden willst solltest du dir mal das hier anschauen: http://www.winapi.net/index.php?inhalt=tipp1
Je nach dem, was du machen willst wäre aber ein Dialog (Ressource) bzw. eine MessageBox das Einfachere
-
naja ich will dass in den letzten 5 sekunden ein fenster im vodergrund aufgeht, dass dann anzeigt, dass der pc gleich herunterfahren wird.
Mein Problem mit dem Thread is aber immernoch nicht gelöscht
-
oder bzw. weiß ich garnicht was ich mit der url soll. Des is doch nurn kleines Fenster in der ein text steht...
...ich will ja, dass sich der text jede sekunde ändert...(Im mom hab ich meinen text auch so geschrieben). Es soll ja ne Art counter fürs herunterfahren werden.und zu dem thread problem: Wenn ich gleich noch ne messagebox mache, bleibt das fenster solange offen biss ich es oder die msgbox schliese. Gibts nicht irgendwie son halt-command, dass den prozess nicht wie Sleep() einfriert, sondern einfach nicht aus der funktion springt wie ne offene MessageBox?
-
Willst du das denn jetzt mit einem normlaen Fenster machen, oder über einen Dialog?
Dein Problem mit den Threads (bzw. wofür du die überhaupt brauchst) verstehe ich immer noch nicht so ganz
Eine MessageBox unterbricht die Programmausführung (bzw. diesen Thread) - sowas willst du jetzt auch machen, oder wie? Wann soll er denn aus der Funktion zurückkehren?
-
also es ist so.
Ich will ja einen timer machen...mit Sleep(1000) lass ich jede Sekunde runterzählen.
Das das nicht den kompletten prozess stoppt, lasse ich das in einem thread laufen.
Und wenn die zeit vorbei ist, soll er mir noch ein fenster erstellen.
Da ich das fenster nach dem durchzählen der zeit starten will, starte ich es noch in dem thread. Aber genau nach CreateWindow() kommt dann return 0; und das fenster wird wieder geschlossen.
MessageBox() unterbricht das ganze und das fenster hängt sich auch nicht auf. Genauso wenig wirds verhindert dass es sich neu zeichnet.
Und ich würd jetzt gern ne methode haben, die den thread genauso stoppt wie die messagebox, nur ohne dass ne messagebox aufgeht.
oder gibts noch ne andere möglichkeit dass dieses fenster "am leben erhalten wird"?ich hoffe das war jetzt dass es jeder versteht

-
Warum nimmst du nicht einfach SetTimer
