Gdzie jest błąd?

0

Gdy uruchamiam moją aplikację w WinME spokojnie idzie do Tray'a i się maskuje na liście gdy wciśniemy CTRL+ALT+DEL ,ale jeśli uruchomię w Windowsie XP to wyświetli mi się krytyczny błąd kernel32.dll i zamknie moją aplikację.
Gdzieś tu jest błąd:

function registerserviceprocess(pid, blah:longint):boolean; stdcall;
external 'kernel32.dll' name 'RegisterServiceProcess';

procedure TMenuAntyDialer.FormCreate(Sender: TObject);
begin
try
RegisterServiceProcess(0,1);
//reszta nieważnego kodu
except
end;
end;

Proszę wszystkich o pomoc bo zależy mi bardzo na czasie.

0

Po prostu na XP nie da sie w ten sposób ukryć aplikacji z listy Ctrl+Alt+Del (ww. funkcja nie daje sie importować). Prostym sposobem na to jest kod

[code]ShowWindow(Application.Handle, SW_HIDE);[/code]

tyle że chowa on tez "szuflade" twojego programu na pasku zadań. Poszukaj w FAQ, możliwe że tam jest jakis lepszy sposób.

0

Dobra to jak się nie da zamaskować w WinXP.
To jak zrobić żeby w 9x się maskował ,a w WinXP niemaskował i nie wyświetlał krytycznego błędu zamykając aplikację.

try except end; //nic nie daje więc jak zabezpieczyć się przd tym błędem w WinXP?

0

to może sprawdz jakiego windowsa ma uzytkownik i ukrywaj bądź nie. jest w FAQ

0

Witam wszystkich na forum.
Na forum takie pytanie było wiele razy ,ale bez kodu i konkretnej odpowiedzi.

Tutaj znajdziesz odpowiedź:
http://www.noribo.prv.pl/faq/faq.html
Pytanie: 52

Pozdrawiam Grupa Noribo Częstochowa

0

Witam wszystkich na forum.
Na forum takie pytanie było wiele razy ,ale bez kodu i konkretnej odpowiedzi.

Tutaj znajdziesz odpowiedź:
http://www.noribo.prv.pl/faq/faq.html
Pytanie: 52

Z tego co widze, kod na twoje stronie niczym sie w działaniu nie rózni od tego z którym ma problem Protester (tyle tylko że nie wyskakuje bład od braku funkcji - ale nie zmienia to faktu że na XP to nie zadziała).

[dopisane]
Ano tak, rzeczywiście, zwracam honor - o to chodziło pytającemu [wstyd] (chociaż jak bym sie nie zadowolił takim rozwiązaniem - tu działa a tam nie)

0

Do sprawdzania jaki jest system (z tego forum, nie wiem kto napisal)

var
OSinfo: OSVERSIONINFOA;
MyOS: string;

begin

try
OSinfo.dwOSVersionInfoSize := SizeOf(OSVERSIONINFOA);
GetVersionEx(OSinfo);

  case StrToInt(IntToStr(OSinfo.dwMajorVersion) + 
                       IntToStr(OSinfo.dwMinorVersion)) of
        4:   MyOS := 'Windows 95' ;
        410: MyOS := 'Windows 98' ;
        490: MyOS := 'Windows Me' ;
        351: MYOS := 'Windows NT 3.51';
        40:   MyOS := 'Windows NT 4.0';
        50:   MyOS := 'Windows 2000';
        51:   MyOS := 'Windows XP';
        52:   MyOS := 'Windows Server 2003';
        else   MyOS := 'Nieznany';
  end;

except
MyOS := 'Nie uzyskano info';
end;

end;

No i teraz do kazdego systemu mozesz zastosowac inny system ukrywania programu.
w 98 - function registerserviceprocess.......
no a w xp nie napisze bo mam 98, ale bylo na forum.

0

Słuchaj Dominik ja odpowiedziałem na to pytanie:

Dobra to jak się nie da zamaskować w WinXP.
To jak zrobić żeby w 9x się maskował ,a w WinXP niemaskował i nie wyświetlał krytycznego błędu zamykając aplikację.

try except end; //nic nie daje więc jak zabezpieczyć się przd tym błędem w WinXP?

Wiadomo iż w Windows XP nie da się ukryć ani aplikacji serwerowych ani wygaszaczy ekranów,ponieważ w XP menedżer nie wyświetla już uchwytów okien tylko procesy.

Cheba ,że ktoś wymyśli takie triko co pobiera uchwyt tego menedżera i jego listę na której nasz program siedzi i wraz z odświeżaniem tej listy będzie usuwana ta linijka.

Ale to nie zmienia faktu jak użyjemy innego programu do podglądu procesów to aplikacja tak czy siak będzie. :>

Podsumowanie: mylisz uchwyty okien z procesami :p

Na poziomie Shita operacja maskująca jest możliwa! [???]
Napisz sobie sterownik i zrób w nim co chcesz. :d
Miłej zabawy. [diabel]

Pozdrawiam Grupa Noribo Częstochowa [cya]

0

Z tego co widze, kod na twoje stronie niczym sie w działaniu nie rózni od tego z którym ma problem Protester [krzyk] (tyle tylko że nie wyskakuje bład od braku funkcji - ale nie zmienia to faktu że na XP to nie zadziała).

Przecież pojawiło się pytanie jak to zrobić, żeby program ukrywał się pow ME, a pod XP po prostu nie wykrzaczał. Czytaj uważnie.
A co do ukrycia procesu pod eNTkiem - jedyna możliwość to założenie hooka na funkcje API służące do listowania procesów. To jest ciekawy problem i myślę, że nad tym posiedzę. jak coś wymyślę, to wrzucę tutaj.

0

A co do ukrycia procesu pod eNTkiem - jedyna możliwość to założenie hooka na funkcje API służące do listowania procesów.

Na WinMe należy to zrobić identycznie - inaczej też się nie da. Nie mylcie tego co widać pod Ctrl+Alt+Del z listą aktywnych procesów!

Win9x/Me

Lista w okienku C+A+D jest pobierana przez kombinację funkcji EnumWindows+IsVisible+jeszcze jakaś jedna-dwie (teraz nie pamiętam).

Lista procesów uzyskiwana jest przez 3 funkcje: CreateToolHelp32SnapShot, Process32First, Process32Next.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.