unsichtbare anwedung...
-
Hi !
Melde dein Programm einfach als Service an !
Unter Win9x/me wird es dann gar nicht mehr angezeigt, und XP/2k nur unter Taskmanager->ProzesseIch hab da glaubich auch noch ein Tutorial zu... Mail mir wenn du es haben willst.
-
@ <:D>
danke ... aber was da steht funzt bei windows 2000 und nt grade nicht *gg*soll es aber
-
@ReneG
wie genau macht man das??
Das steht dazu in der FAQ
Dialogbasierend: Unsichtbar startenaber dieses Beispiel wird nach dem unsichtbaren Starten geschlossen.
-
Wenn du ganz lustig bist (:D ) mach mit dem Klassen-Assi ne Dialog-Anwendung, entferne den Dialog aus den Resourcen und die ganze Dialog-Klasse + .cpp's
Dann murkst du dir das Programm in der Klasse CProgrammApp wieder zurecht - Dort wird nämlich in der Funktion InitInstance() dein Dialog-Objekt erzeugt, und das wollen wir ja nich mehr. Also nehmen wir den Teil raus, entfernen die Includes für CProgrammDlg und dann sollte es laufen (ohne Fenster, ohne Task-Icon) Unter Sinnlows98 geht das ab wie Schmidt's Katze (:D - Ne, watt bin ich heute wieder lustig) , obs auch unter Win2000 geht weiss ich nich. Probiers mal aus und sag uns das Ergebnis
-
@Cpp_Junky na tool das wußte ich auch, aber wenn ich das weglasse geht er in der InitInstance() funktion einfach bis ans ende und Beenden die Anwendung, dies ist aber nicht gewünscht.
-
Preisfrage: Warum baust du deinen Programmcode dann nicht in InitInstance ein bzw rufst die Funktionen (/deiner Klasse bspw) von dort aus auf ???Oder bist du unbedingt auf CDialog-Funktionen angewiesen ?
-
@Cpp_Junky oh man
das ich das tun kann ist mir bewußt.
Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagieren.
Daher hab ich ja auch "und Beenden die Anwendung" geschrieben!!!!!!!!
-
Bitte freundlich bleiben, wenn ne Antwort erwünscht ist. Sonst ist hier ganz schnell dicht.
EDIT:
Satz deutsch gemacht[ Dieser Beitrag wurde am 02.10.2002 um 15:03 Uhr von dEUs editiert. ]
-
Was ist ???
Also so richtig weißt Du nicht, was Du willst, oder??Siehe:
- wie kann ich es mit der MFC schaffen, dass 1. kein fenster angezeigt wird?
2. kein icon in der taskleiste (auch nicht im systray) ?
- Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagieren.Bedeutet also folgendes: Ich will mir keinen Fernseher kaufen, aber trotzdem abends zu Hause TVTotal schauen, wie mach ich das?
-
Original erstellt von RenéG:
**Was ist ???
Also so richtig weißt Du nicht, was Du willst, oder??Siehe:
Bedeutet also folgendes: Ich will mir keinen Fernseher kaufen, aber trotzdem abends zu Hause TVTotal schauen, wie mach ich das?**Mit einer TV-Karte!
...nee Spaß beiseite...
- wie kann ich es mit der MFC schaffen, dass 1. kein fenster angezeigt wird?
2. kein icon in der taskleiste (auch nicht im systray) ?
- Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagierenIch würde mir ein kleines Progg basteln(Win32) und es per "Geplante Tasks" starten...
-
Ich würde mir ein kleines Progg basteln(Win32) und es per "Geplante Tasks" starten...
geht leider nicht da es auch unter nt 4 laufen soll und es dort sowas nicht gibt.
- wie kann ich es mit der MFC schaffen, dass 1. kein fenster angezeigt wird?
2. kein icon in der taskleiste (auch nicht im systray) ?
- Ich will ein Errinerungsprogramm bastelt und dazu in WM_TIMER message reagieren.Ich will ein Dialog nicht sichtbar und nicht in der Taskleiste. Wiso geht beides nicht??
<:D> Hi!
Schau dir mal folgenden Beitrag an:
http://f25.parsimony.net/forum63133/messages/2833.htmhat diesen link gepostet und dort wurde eine Möglichkeit beschrieben die bei mir nicht funkts.
Gibt es keine weitere Möglichkeit z.B. mit der win api ???
-
@Deadmaker_HUNTER:
Timer lassen sich auch ohne Dialog-Klasse programmieren.
-
ich glaube hier liegt irgendwie eine verwechslung vor
ich bin nicht "< >"
frag mich auch was er hier im thread will
ich checke erstmal cpp_junky's version
thx4help bis hierhin
-
Cpp_Junky Timer lassen sich auch ohne Dialog-Klasse programmieren.
finde kein WM_TIMER Ereigniss bei der App
Deadmaker_HUNTER frag mich auch was er hier im thread will
naja wuzu ein neues Thread aufmachen wenn in dem hier das Thema ist das ich suche??
-
Das kann man sich doch ganz schnell selberschreiben. Versuchs mal mit GetTickCount(); Das ganze musst du dann nur in Minuten/Stunden/wasauchimmer umrechnen. Such im Internet nach Timer-Klassen! Es gibt mit Sicherheit noch mehr Alternativen.
-
Ich hab jetzt den Code aus dem Beispiel im FAQ benutzt, aber hab das problem, dass sich die anwendung kurz nach dem start selber beendet
und ich kann auch nicht alles in InitInstance machen, weil ich einen CAsyncSocket oder CSocket benutze.
-
Ich hab mir auchmal sowas erstellt:
//In InitInstance CxxxDlg dlg; m_pMainWnd = &dlg; dlg.Create(IDD_XXX_DIALOG); dlg.ProcessMessages();
Dann der CxxxDlg die Funktion ProcessMessages hinzufügen:
void ProcessMessages() { MSG m_msgCur; while(GetMessage(&m_msgCur, NULL, NULL, NULL)) { if (!PreTranslateMessage(&m_msgCur)) { TranslateMessage(&m_msgCur); DispatchMessage(&m_msgCur); } }; }
Nun kannst wie bei einem normalen Dialog WM_Timer hinzufügen. Bei Close etc musst du aber DestroyWindow aufrufen und nicht die CDialog::Onxxx() !
-
in InitInstance() m_pMainWnd = new CMainFrame(); m_pMainWnd->ShowWindow(SW_HIDE); m_pMainWnd->UpdateWindow(); CMainFrame::CMainFrame() { RECT r; r.left = 0; r.top = 0; r.right = 0; r.bottom = 0; Create( NULL, "Simple Nonvisible MFC App", WS_EX_TOOLWINDOW, r, NULL, NULL, 0, NULL ); }
Noch besser ist jedoch direkt WinAPI (MFC unsichtbar macht wenig Sinn):
#include <windows.h> unsigned int HotKeyID1 = 100; unsigned int HotKeyID2 = 101; LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_HOTKEY: if(wParam == HotKeyID1) MessageBox(hwnd, "Alt+Shift+F11 wurde gedrückt." , "Nachricht WM_HOTKEY wurde erzeugt.", MB_OK); if(wParam == HotKeyID2) MessageBox(hwnd, "Alt+Shift+F12 wurde gedrückt." , "Nachricht WM_HOTKEY wurde erzeugt.", MB_OK); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); } int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow) { char szName[] = "MeineKlasse"; HBRUSH MyBrush = CreateSolidBrush( RGB( 0, 150, 255 ) ); WNDCLASS wc; MSG msg; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hI; wc.hIcon = LoadIcon (NULL, IDI_WINLOGO); wc.hCursor = 0; wc.hbrBackground = MyBrush; wc.lpszMenuName = NULL; wc.lpszClassName = szName; RegisterClass (&wc); HWND hwnd = CreateWindowEx (WS_EX_TOOLWINDOW, szName, "", 0 , 0, 0, 0, 0, NULL, NULL, hI, NULL); RegisterHotKey(hwnd, HotKeyID1, MOD_ALT | MOD_SHIFT, VK_F11); RegisterHotKey(hwnd, HotKeyID2, MOD_ALT | MOD_SHIFT, VK_F12); ShowWindow (hwnd, iCmdShow); UpdateWindow (hwnd); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; }
-
-
Schau mal in die FAQ unter Programm als Service