-
1.Как сделать, чтобы все формы выходили во весь экран. Как сделать, чтобы форму нельзя было переместить на экране, потянув за верхнюю границу.Свойства DefaultSize и DefaultPosition = true у всех форм. 2. Как сделать, чтобы приложение не запускалось дважды.JustOne не получилось использовать, выходит ошибка при компилировании.
-
> 1.Как сделать, чтобы все формы выходили во весь экран.
Имеется в виду, чтобы не было верхней и нижней строк Windows (кнопка пуск и строка меню)? Если да, поищите по форуму отвечал недавно.
> Как сделать, чтобы форму нельзя было переместить на экране, > потянув за верхнюю границу.Свойства DefaultSize и DefaultPosition > = true у всех форм.
DefaultSize и DefaultPosition = true должно быть достаточно.
> 2. Как сделать, чтобы приложение не запускалось дважды.JustOne > не получилось использовать, выходит ошибка при компилировании.
У меня примерно так:
При старте приложения: initialization TestApp;
procedure TestApp; const AppClass = {$ifndef wince}'obj_App'{$else}'App'{$endif}; var W: HWND; ClassName, S: KOLString; CopyData: TCopyDataStruct; begin SetLength(S, 100); SetLength(ClassName, 100); W:= FindWindow(AppClass, nil); while W <> 0 do begin GetClassName(W, PKOLChar(ClassName), 100); GetWindowText(W, PKOLChar(S), 100); if PKOLChar(ClassName) = AppClass then begin PKOLChar(S)[9]:= #0; if PKOLChar(S) = 'mdvReader' then Break; end; W:= GetWindow(W, GW_HWNDNEXT); end; if W <> 0 then begin S:= ParamStr(1); CopyData.dwData:= 09121972; if ParamCount > 0 then begin CopyData.cbData:= (Length(S)+1)*SizeOf(KOLChar); CopyData.lpData:= PKOLChar(S); end else begin CopyData.cbData:= 0; CopyData.lpData:= nil; end; SendMessage(W, WM_COPYDATA, 0, Integer(@CopyData)); Halt(1); end; end;
У Апплета проверяем: function TTextOutForm.KOLAppletMessage(var Msg: tagMSG; var Rslt: Integer): Boolean; begin Result:= False; case Msg.message of WM_COPYDATA: if PCopyDataStruct(Msg.lParam).dwData = 09121972 then begin
SetForegroundWindow(Applet.Handle); Applet.ProcessMessages;
if PCopyDataStruct(Msg.lParam).lpData <> nil then OpenFile(PKOLChar(PCopyDataStruct(Msg.lParam).lpData)); Result:= True; end; end; end;
Это для случая если нужно еще и данные передать приложению. А если просто активизировать, то в procedure TestApp; .... if W <> 0 then begin //вместо { S:= ParamStr(1); CopyData.dwData:= 09121972; if ParamCount > 0 then begin CopyData.cbData:= (Length(S)+1)*SizeOf(KOLChar); CopyData.lpData:= PKOLChar(S); end else begin CopyData.cbData:= 0; CopyData.lpData:= nil; end; SendMessage(W, WM_COPYDATA, 0, Integer(@CopyData)); } //пишем SetForegroundWindow(Ц); Halt(1); end; .... end;
-
Подскажите что делаю не так. Код процедуры вставил в Unit1, в секции initialization прописал TestApp. При запуске каждый раз новая копия.
procedure TestApp; const AppClass = {$ifndef wince}'obj_App'{$else}'App'{$endif}; var W: HWND; ClassName, S: KOLString; begin SetLength(S, 100); SetLength(ClassName, 100); W:= FindWindow(AppClass, nil);
ShowMessage(Int2Str(W)); // Поставил для проверки W=0
while W <> 0 do begin GetClassName(W, PKOLChar(ClassName), 100); GetWindowText(W, PKOLChar(S), 100); if PKOLChar(ClassName) = AppClass then begin PKOLChar(S)[9]:= #0; if PKOLChar(S) = 'mdvReader' then Break; end; W:= GetWindow(W, GW_HWNDNEXT); end;
if W <> 0 then begin SetForegroundWindow(W); Halt(1); end; end;
-
В KOL-CE есть JustOneActivate для ограничения запуска одного экземпляра приложения и активации его при запуске второго экземпляра.
-
-
> В KOL-CE есть JustOneActivate для ограничения запуска одного > экземпляра приложения и активации его при запуске второго > экземпляра.
Большое спасибо за ответ. Еще у меня получилось так:
procedure TestApp; var W: HWND; begin W:= FindWindow(nil, 'Proba'); if W<>0 then begin SetForegroundWindow(W); Halt(1); end; end;
-
Я всегда использую
CreateSemaphore(nil, 0, 1, 'My_Program');
if (GetLastError = ERROR_ALREADY_EXISTS) then begin
Halt(0);
end;
P.S. Вариантов масса
-
> Я всегда использую > CreateSemaphore(nil, 0, 1, 'My_Program'); > if (GetLastError = ERROR_ALREADY_EXISTS) then begin > Halt(0); > end; > > P.S. Вариантов масса
Это просто защита от повторного запуска. А вопрос стоял в активации уже работающего приложение при попытке повторного запуска...
-
> Yury Sidorov (08.02.08 14:12) [7]
+ SetForegroundWindow(FindWindow(nil, 'Заголовок программы'));
-
Удалено модератором
-
That and the women the doctor dated. lesbian-naked lesbian-oralsex lesbian-lady lesbian-cock lesbian-sexy [url]After a period, he shifted his attentions to the girls brightly painted cunt lips, bringing the flailing tip of his weapon up between their legs with remarkable effect.
|