Wyłaczanie danego programu

Odpowiedz Nowy wątek
ppompka
2011-09-24 09:28
ppompka
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ź.

Pozostało 580 znaków

2011-09-24 09:56

Rejestracja: 10 lat temu

Ostatnio: 4 lata temu

Lokalizacja: Lublin

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

edytowany 1x, ostatnio: ujemny, 2011-09-24 10:18

Pozostało 580 znaków

2011-09-24 10:29

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

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

edytowany 2x, ostatnio: ppompka, 2011-09-24 10:43

Pozostało 580 znaków

2011-09-24 10:30

Rejestracja: 10 lat temu

Ostatnio: 4 lata temu

Lokalizacja: Lublin

0

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


Pozostało 580 znaków

2011-09-24 10:44

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

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.

Pozostało 580 znaków

2011-09-24 10:46

Rejestracja: 10 lat temu

Ostatnio: 4 lata temu

Lokalizacja: Lublin

0

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


edytowany 1x, ostatnio: ujemny, 2011-09-24 10:49

Pozostało 580 znaków

2011-09-24 10:50

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

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ś.

Ban na Google? - Patryk27 2011-09-24 10:51

Pozostało 580 znaków

2011-09-24 10:56

Rejestracja: 10 lat temu

Ostatnio: 4 lata temu

Lokalizacja: Lublin

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();
}

edytowany 2x, ostatnio: ujemny, 2011-09-24 10:57
A skąd pewność, że korzysta z Borlandu? - Rev 2011-09-24 11:01
Przykleiłem kod od siebie... pewności oczywiście nie ma. - ujemny 2011-09-24 11:06

Pozostało 580 znaków

2011-09-24 11:01

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

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

edytowany 1x, ostatnio: ppompka, 2011-09-24 11:02
a w czym to piszesz? - ujemny 2011-09-24 11:03

Pozostało 580 znaków

2011-09-24 11:06

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

0

Code::blocks 10.05

Pozostało 580 znaków

2011-09-24 11:16

Rejestracja: 9 lat temu

Ostatnio: 9 lat temu

0

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

Po prostu dodaj wpis do rejestru przy pomocy komend z linku który ci podałem. - ujemny 2011-09-24 11:19

Pozostało 580 znaków

Odpowiedz

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