zminimalizowana konsola??

0

Witam.
Piszę koledze program, który ma być uruchamiany podczas startu windowsa, tak, żeby nie było go widać, a następnie ma uruchomić plik .bat. Program jest prawie gotowy, ale nie mam zielonego pojęcia, jak zrobić, żeby był niewidoczny?
Inny kolega podpowiedział mi, żeby użył procedury API(niżej kod.), jakby ktoś rzucił okiem i powiedział co jest nie tak, byłbym wdzięczny.

#include <vcl.h>
#include <stdio.h>
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <dstring.h>



struct moja {
        int rok;
        int miesiac;
        int dzien;
}Tskrypt;


HWND hwndOkna;

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
        AnsiString tmp,tmp2;
        char buf[100];
GetWindowText(hwnd,buf,sizeof(buf));
tmp=buf;
tmp2="syscomp";
if (tmp.Pos(tmp2)==0)
  return true;
else
  {
   hwndOkna=hwnd;
   return false;
  }
}


void main(int argc, char* argv[])
{

        EnumWindows((WNDENUMPROC)EnumWindowsProc,0);
        ShowWindow(hwndOkna,SW_HIDE);

        struct tm *ptr;
        time_t lt;
        FILE *text;
        int rok, miesiac;
        int i;

        //printf("Wersja Beta\n\n\n");

        lt = time(NULL);
        ptr = localtime(&lt);

        if(argc <3)
        {
             //   printf("za malo argumentow.\n");
                exit(1);
        }

        if((text=fopen(argv[1], "r+"))==NULL)
        {
              //  printf("Nie moge otworzyc pliku ze skryptem.\n");
              //  printf("%d",ferror(text));
                exit(1);
        }
      //  printf("Skanowanie skryptu....\n\n");
        fscanf(text,"%d-%d-%d",&Tskrypt.rok, &Tskrypt.miesiac, &Tskrypt.dzien);

        rok = ptr->tm_year + 1900;
        miesiac = ptr->tm_mon +1;

      //  printf("rok(kiedy mial sie wykonac): %d miesiac: %d dzien %d\n\n", Tskrypt.rok, Tskrypt.miesiac, Tskrypt.dzien);
      //  printf("struktura tm(teraz co jest??): rok: %d, miesiac: %d, dzien: %d\n",rok, miesiac, ptr->tm_mday);

        /*jesli dokladnie ten dzien....*/
        if((rok == Tskrypt.rok) && (miesiac == Tskrypt.miesiac)
                && (ptr->tm_mday == Tskrypt.dzien))
                {
              //  printf("Wykonuje: black.bat\n\n\n");
                system(argv[2]);
                }
        /*jesli pozniej...*/
        else if((rok >= Tskrypt.rok) && (miesiac >= Tskrypt.miesiac))
                {
               // printf("Wykonuje: black.bat\n\n\n");
                system(argv[2]);
                }
        /*jesli jeszcze pozniej... :)*/
        else if(rok >= Tskrypt.rok)
                {
              //  printf("Wykonuje: black.bat\n\n\n");
                system(argv[2]);
                }

             //   printf("Nacisnij cos, aby przerwac program.\n");
             //   i=getchar();


        exit(0);

}

 

kod...

        ShowWindow(hwndOkna,SW_HIDE);

...niby u kolegi działa, ale u mnie nie... gdy zmienie na MINIMIZE, to też najpierw jest wiodoczne a po chwili się minimalizuje... i cokolwiek bym tam nie wpisał to nie działa....

Prosze o pomoc.
Pozdrawiam.

PS: program piszę w borladn builderze 6.0.

0

Możesz zrobić projekt pod Windows (bez konsoli) i nie tworzyć w nim okna. Powinno wyjść na to samo (lub lepiej).

0

Próbowałem, ale BCB się pluje, że mu czegoś cały czas brakuje... :(

0

Zmień

void main(...)

na:

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,lpstr lpCmdLine,int nCmdShow)

// i może wywal te includy, które nie są potrzebne (np. vcl)

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