ďťż

Ładny brzuch

Mam taki kod:

CreateMutex(nil, FALSE, 'my'); if GetLastError() <> 0 then begin showmessage('Otworzyłeś już program! Nie można otwierać dwa razy tej samej aplikacji!'); Halt; end

który uniemożliwia uruchomienie drugi raz tego samego programu i pytanie, czy da się łatwo zrobić, żeby dodatkowo uaktywnić już otwarty program. Da się to łatwo zrobić, czy trzeba dodać funkcję manipulacją uchwytów??




Mam taki kod:

CreateMutex(nil, FALSE, 'my'); if GetLastError() <> 0 then begin showmessage('Otworzyłeś już program! Nie można otwierać dwa razy tej samej aplikacji!'); Halt; end

który uniemożliwia uruchomienie drugi raz tego samego programu i pytanie, czy da się łatwo zrobić, żeby dodatkowo uaktywnić już otwarty program. Da się to łatwo zrobić, czy trzeba dodać funkcję manipulacją uchwytów??

Tak przenies gdzies fokusa

jak to zrobić??

Szukaj uchwytu okna po klasie/belce. Potem z górki.

.......
lub

http://forum.ks-eksp...m...st&p=388125 Zamień ShowWindow() na SetForegroundWindow((void*) h);

Masz dla delphi:procedure TForm1.FormCreate(Sender: TObject); var f:cardinal; h:integer; p:pointer; r:trect; begin f:=OpenFileMapping(FILE_MAP_READ,false,'naszprogramik'); if f>0 then begin p:=MapViewOfFile(f,FILE_MAP_READ,0,0,4); CopyMemory(@h,p,4); ShowWindow(h,SW_RESTORE); SetForegroundWindow(h); ExitProcess(0); end; CloseHandle(f); f:=CreateFileMapping(INVALID_HANDLE_VALUE,nil,PAGE_READWRITE,0,4,'naszprogramik') ; h:=form1.handle; p:=MapViewOfFile(f,FILE_MAP_WRITE,0,0,4); CopyMemory(p,@h,4); end;

/dół: jak już chcesz tak zrobić, to pamiętaj, że klasa okna to zapewne nie "my", tylko TFormx.
Użytkownik Cyrkiel edytował ten post 12 sierpień 2007, 12:29


Mam takie coś:

h_wnd := FindWindow('my', 'my'); if h_wnd <> 0 then begin ShowWindow(h_WND, SW_RESTORE); end

i nei działa.

SetForegroundWindow zamiast ShowWindow?
Użytkownik krajew4 edytował ten post 11 sierpień 2007, 18:37

SetForegroundWindow zamiast ShowWindow?
Ja osobiście ze względu na odpały winapi dałbym i showwindow i setforeground window ;).

@Cyrkiel

Mam kod:
procedure TglownaForm.FormCreate(Sender: TObject); var f:cardinal; h:word; p:pointer; begin f:=OpenFileMapping(FILE_MAP_READ,false,'program'); if f>0 then begin p:=MapViewOfFile(f,FILE_MAP_READ,0,0,2); CopyMemory(@h,p,2); SetForegroundWindow(h); CloseHandle(f); Application.Terminate; end; f:=CreateFileMapping(INVALID_HANDLE_VALUE,nil,PAGE_READWRITE,0,2,'program'); h:=handle; p:=MapViewOfFile(f,FILE_MAP_WRITE,0,0,2); CopyMemory(p,@h,2);

i po próbie ponownego uruchomienia, drugie okno się nie uruchamia i nie przywraca sie też pierwsze. CO można zrobić??

Już poprawiłem.

Dzięki teraz działa.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •