Проблема Создайте DLL, совместимую с Inno Setup

MCV

Новичок
Привет друзья!... Может кто-нибудь объяснить, как создать DLL C++ в Visual Studio 2010 - Embarcadero RAD Studio 2010, совместимом с inno setup

English Version
Hi friend Can anyone explain how to create a C ++ DLL in Visual Studio 2010 or Embarcadero RAD Studio 2010, compatible with inno setup?
 
Последнее редактирование:

SotM

Участник
Проверенный
Этот текст на каком языке написан?!
 
  • Like
Реакции: MCV

Krinkels

Он где то тут
Администратор
По сути #pragma comment(linker, "/ENTRY:DllMain") не обязательная функция, я уж не помню зачем я её вставил, а может просто забыл удалить
 

MCV

Новичок
Я напишу DLL, и я пошлю свой прогресс

надеюсь не получить проблемы, как в последний раз, когда я пытаюсь
 

MCV

Новичок
И вот опять проблема ...



Полученное значение - это Application HWND

В ПК, в котором он скомпилирован, отлично работает


Кто-нибудь знает, как решить эту проблему?
 

MCV

Новичок
И вот опять проблема ...


Полученное значение - это Application HWND

В ПК, в котором он скомпилирован, отлично работает



Кто-нибудь знает, как решить эту проблему?
 
Последнее редактирование:

MCV

Новичок
Скинь скрипт и либу
Dll Code

C++:
#pragma once
#include <Windows.h>
C++:
#include "Header.h"
HWND AppHandle = 0;

BOOL __stdcall EnumProc(HWND hWnd, LPARAM lParam)
{
    DWORD pid;
    WCHAR cl[14];
    GetWindowThreadProcessId(hWnd, &pid);
    GetClassNameW(hWnd, cl, 13);

    if (pid == GetCurrentProcessId())
    {
        if (wcsstr(cl, L"TApplication"))
            AppHandle = hWnd;
    };

    return true;
};

void Dll_Start(void)
{
    EnumWindows(EnumProc, 0);
};

void Dll_Stop(void)
{
};

BOOL __stdcall DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        Dll_Start();
        break;

    case DLL_PROCESS_DETACH:
        Dll_Stop();
        break;
    };

    return TRUE;
};
C++:
#include "Header.h"
extern HWND AppHandle;

HWND __stdcall GetAppHandle(void)
{
    return AppHandle;
};
C++:
LIBRARY
EXPORTS
    GetAppHandle
Inno Setup Script

Код:
[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName=.

[Files]
Source: IsFunc.dll; DestDir: {tmp}; Flags: dontcopy;

[Code]
function GetAppHandle(): Longint;
external 'GetAppHandle@files:IsFunc.dll stdcall';

function InitializeSetup(): Boolean;
begin
  MsgBox(IntToStr(GetAppHandle()), mbInformation, MB_OK);
end;
Где проблема?
 

Krinkels

Он где то тут
Администратор
Странно, у меня тоже нихрена не работает
 

Krinkels

Он где то тут
Администратор
Хе, у меня заработало :)

В настройках релиз версии ставишь такое:
Снимок1.JPG
и должно все работать. По крайней мере у меня все нормально
 

MCV

Новичок
Сверху