На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Привидите пожалусто в рабочий вид.
    Взял сдесь код и никак немогу его запустить.
    Запутался в структуре.
    Я с этими конструкторами дело имел последний раз ещё в институте. Напроч забыл как это делаеться.


    Êàê ñäåëàòü, ÷òîáû çàïóñêàëàñü òîëüêî îäíà êîïèÿ ïðèëîæåíèÿ
    var AtomText: array[0..31] of Char;


    procedure LookForPreviousInstance;
    var
    PreviousInstanceWindow : hWnd;
    AppName : array[0..30] of char;
    FoundAtom : TAtom;
    begin
    // ïîìåùàåì èìÿ ïðèëîæåíèÿ â AtomText
    StrFmt(AtomText, 'OnlyOne%s', [Copy(Application.Title,1,20)]);
    // Ïðîâåðÿåì, íå ñîçäàíî ëè óæå àòîìà ñ òàêèì èìåíåì ïðèëîæåíèÿ
    FoundAtom := GlobalFindAtom(AtomText);
    if FoundAtom <> 0 then // ýòà êîïèÿ ïðèëîæåíèÿ óæå çàïóùåíà
    begin
    StrFmt(AppName,'%s', [Application.Title]);
    // èçìåíÿåì òåêóùèé çàãîëîâîê, ÷òîáû FindWindow íå âèäåëà åãî
    Application.ShowMainForm := false;
    Application.Title := 'destroy me';
    // èùåì ïðåäûäóùóþ êîïèþ ïðèëîæåíèÿ
    PreviousInstanceWindow := FindWindow(nil,AppName);
    // Ïåðåäà¸ì ôîêóñ íà ïðåäûäóùóþ êîïèþ ïðèëîæåíèÿ
    // çàâåðøàåì òåêóùóþ êîïèþ
    Application.Terminate;

    if PreviousInstanceWindow <> 0 then
    if IsIconic(PreviousInstanceWindow) then
    ShowWindow(PreviousInstanceWindow,SW_RESTORE)
    else SetForegroundWindow(PreviousInstanceWindow);
    end;
    // ñîçäà¸ì ãëîáàëüíûé àòîì, ÷òîáû ïðåäîòâðàòèòü çàïóñê äðóãîé êîïèè ïðèëîæåíèÿ
    FoundAtom := GlobalAddAtom(AtomText);
    end;




    constructor TForm.Create(AOwner: TComponent);
    begin
    inherited;

    LookForPreviousInstance;
    ...
    end;


    destructor TForm.Destroy;
    var
    FoundAtom : TAtom;
    ValueReturned : word;
    begin
    // íå çàáóäüòå óäàëèòü ãëîáàëüíûé àòîì
    FoundAtom := GlobalFindAtom(AtomText);
    if FoundAtom <> 0 then ValueReturned := GlobalDeleteAtom(FoundAtom);

    inherited Destroy;
    end;

      А что именно непонятно с деструкторами?
        уже разобрался
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0392 ]   [ 16 queries used ]   [ Generated: 27.04.24, 05:52 GMT ]