Wyłaczanie danego programu

0

Uczę się trochę programować w c++ i chciałbym napisać program który otwiera i po pewnym czasie zamyka dany program i tak w kółko (nie dodałem jeszcze tutaj pętli, na razie chodzi mi o kod do zamknięcia programu, potem dopisze resztę). W moim przypadku notatnik. Napisałem coś takiego

#include <windows.h>
#include <time.h>
int main()
{
    _sleep (1000);
    WinExec("notepad", SW_SHOWMAXIMIZED) ; //otwieranie programu
    _sleep (1000)  //odczekanie czasu
      // tutaj powinno być zamknięcie programu
    return (0);
}

Ale nie wiem co napisać aby zamknąć program. Czy jest jakaś komenda poodobna do tej WinExec("notepad", SW_SHOWMAXIMIZED) ; Która zamknie, a nie otworzy ten notanik? Bardzo proszę o odpowiedź.

0
SendMessage(HWND hwnd, WM_CLOSE, 0, 0);
0

Poradziłem już sobie dodając komendę system ("taskkill /f /im notepad.exe") ;.
Program działa, co 0,5s włącza się, i po 0,5s wyłącza, i tak w kółko :D

0

Odradzam używanie system(), wielu forumowiczów by się z tym zgodziło.

0

A mógłbyś to jakoś prosto wytłumaczyć dlaczego?

A czy jest jakiś prosty sposób, żeby po 1 uruchomieniu tego programu, uruchamiał się on za każdym razem przy uruchamianiu systemu?
Czyli taki autostart, ale przy braku możliwości fizycznego przerzucenia programu do folderu autostart.

0

Różna rzeczy dzieją się po jej używaniu. ...wiesz kręgi na polach itp:) Tak można, trzeba dodać wpis do rejestru.

0

heh :)

A może mógłbyś dokładnie przybliżyć jak dodać wpis do rejestru za pomocą kodu? Chociaż jakiś link, czy coś.

1
TRegistry *reg = new TRegistry;
AnsiString keyname = "mama";

reg->RootKey = HKEY_LOCAL_MACHINE;
reg->CreateKey("SOFTWARE\\klucz");
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);

if(reg->ValueExists(keyname))
{
	reg->Free();
}
else
{
	reg->WriteString(keyname, Application->ExeName);
	reg->Free();
}
0

Czyli cały kod powinien wygladać tak, czy trzeba to wstawić w inne miejsce. Aha i czy nagłówek #include <registry.hpp> jest potrzebny?

#include <windows.h>
#include <time.h>
#include <iostream>
#include <cstdlib>
#include <registry.hpp>

TRegistry *reg = new TRegistry;
AnsiString keyname = "mama";

reg->RootKey = HKEY_LOCAL_MACHINE;
reg->CreateKey("SOFTWARE\\klucz");
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true);

if(reg->ValueExists(keyname))
{
        reg->Free();
}
else
{
        reg->WriteString(keyname, Application->ExeName);
        reg->Free();
}

int main ()

{
   do{
    _sleep (500);
    WinExec("notepad", SW_SHOW) ;
    _sleep (500);
    system ("taskkill /f /im notepad.exe") ;
    } while (1);
    return (0);

}

jeśli tak to zrobię, to wywala mi 16 błędów. w tym że nie ma bibloteki registry.hpp

AHA, właśnie zapomniałem dopisać chyba tego najważniejszego. Używam Code::blocks

0

Code::blocks 10.05

0

I rozumiem że mam to wstawiać w miejsce te które podałem w kodzie wyżej?

1 użytkowników online, w tym zalogowanych: 0, gości: 1