1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Свободное общение

Тема в разделе "Досуг", создана пользователем Krinkels, 16 июн 2011.

  1. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    172
    Симпатии:
    53
    Пол:
    Мужской
    Видимо на плохих порно сайтах сидиш))
     
  2. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    172
    Симпатии:
    53
    Пол:
    Мужской
    Смотря на каком языке написано, какое соглашение вызовов. В языке c++ все параметры шифруются в имя функции, благодаря чему их потом можно обратно расшифровать. Но есть и минус в таком подходе: простые и понятные функции превращаются в вот такую "красоту": ?a@@YAHD@Z
     
  3. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    172
    Симпатии:
    53
    Пол:
    Мужской
    В разделе отладка нужно настроить вот такую команду:
    cmd /k "путь к exe параметры" и все должно заработать (не проверял, просто проявил знание командной строки) Параметр /k означает что будет выполнена команда в скобках а за тем командная строка будет ожидать следующей команды
    А еще в Visual Studio есть комбинация клафиш ctrl + f5 (которая не даст закрыться коммандной строке после завершения программы)
     
  4. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    172
    Симпатии:
    53
    Пол:
    Мужской
    программа procmon, только она ищет во время выполнения
     
  5. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.286
    Симпатии:
    816
    Код (Inno):
    [setup]
    AppName=My Application
    AppVersion=1.5
    DefaultDirName={pf}
    OutputDir=.

    [Languages]
    Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

    [Code]
    function argv(Param: String): TArrayOfString;
    begin
        SetArrayLength(Result, 2);
        case Param[1] of
            '"': begin
                Result[0] := Copy(Param, 2, Pos('.exe', Lowercase(Param))+2);
                Result[1] := RemoveQuotes(Trim(Copy(Param, Length(Result[0])+3, Length(Param))));
            end;
        else
            begin
                Result[0] := Copy(Param, 1, Pos('.exe', Lowercase(Param))+3);
                Result[1] := RemoveQuotes(Trim(Copy(Param, Length(Result[0])+1, Length(Param))));
            end;
        end;
    end;


    function GetInstalledProgramm(Param: String): Boolean;
    var
        Names, cl: TArrayOfString;
        i, ResultCode: Integer;
        DisplayName, UninstallString: String;
    begin
        if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', Names) then
        for i := 0 to GetArrayLength(Names)-1 do
        begin
            RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + Names[i], 'DisplayName', DisplayName);
            if Pos(Lowercase(DisplayName), Lowercase(Param)) > 0 then
            begin
                Result := True;
                if MsgBox('Программа установки обнаружила уже установленную программу ' + DisplayName + '.'#13#10'Вы желаете предварительно удалить ее?', mbInformation, MB_YESNO) = idYes then
                begin
                    if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + Names[i], 'UninstallString', UninstallString) then
                    begin
                        cl := argv(UninstallString);
                        if not Exec(cl[0], cl[1], '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
                            MsgBox('Ошибка удаления.'#13#10'' + SysErrorMessage(ResultCode) + '.'#13#10'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
                    end;
                end;
                Break;
            end;
        end;
    end;

    procedure InitializeWizard();
    begin
        GetInstalledProgramm('AutoCad');
    end;
     
     

Поделиться этой страницей