을 포함하고 있습니다. 그럼에도 불구하고 이것은 불완전한 질문이지만, 그럼에도 불구하고 ...
델파이의 플러그인에 대해 몇 가지 질문을했습니다. 무엇이 더 좋은 방법은 DLL을, bpl, OCX, 스크립팅 엔진 ...
나는 모든 * .bpls 및 모든 종속성을 배포하고 싶지 않아 ...
내가 필요로하는 * .dll은 TForm . 그리고 그 양식은 호스트 응용 프로그램에 배치해야합니다. delphi에서 직접 지원하지 않습니다 (매우 슬픈 상황). 몇 가지 해결 방법이 있지만 탭 키 등의 문제가 있습니다.
해결 방법이 완벽하지 않습니다.
하지만 다른 가능성이있을 수 있습니다. dll 코드를 직접 호스트 * .exe에 삽입하십시오. 그래서 * .exe는 주입 된 코드가 자신의 것으로 생각할 것입니다. 그리고 많은 문제 (예 : Tab 키가있는 형태)가 없어야합니다. 가능합니까? 그것은 더러운 해킹이 아닙니다. 그 기술은 "프로그램 적으로"합법적입니까?
(I 코드 주입과 경험이없고, 어쩌면 내가 여기 무슨 말인지 sence가되지 않습니다)
안부
베드로가
[편집]
는 몇 가지를 명확히하기 위해 ... TForm을 dll에 넣었을 때 호스트 * .exe 응용 프로그램에이 형식을 포함 시키려고 시도 할 때 많은 문제가 발생합니다. 우선 "TFont에 TFont를 할당 할 수 없습니다"라는 오류가 있지만 이에 대한 해결 방법이 있습니다.
두 번째로 호스트 응용 프로그램은 전체 포함 된 양식을 하나의 구성 요소로 사용하므로 탭 키를 사용할 수 없습니다. (탭을 누르면 포커스가 임베디드 형식에서 완전히 뛰어납니다.) 또한 우리는 이것에 대한 몇 가지 해결 방법을 가지고 있지만 완벽하지는 않습니다 ...
그래서 우리는 호스트에 코드를 삽입하면 어쩌면 호스트가 자신의 코드 인 emebeded form을 생각할 것입니다. 키가 작동합니다.
하지만 전에 말했듯이, 주입에 대해서는 전혀 모른다. 단지 미친 아이디어 일 것이다.)삽입 된 dll 코드를 델파이 * .dll 플러그인으로 사용하십시오. TForm
답변
설명하는 해킹이 없으면 완벽하게 가능하다. 예 :
library FormDLL;
uses
Windows,
Forms,
uMyForm in 'uMyForm.pas' {MyForm};
procedure ShowForm(MainFormHandle: HWND); stdcall;
begin
Application.Handle := MainFormHandle;
with TMyForm.Create(nil) do begin
ShowModal;
Free;
end;
end;
exports
ShowForm;
begin
end.
TMyForm
에는 원하는 것을 넣을 수 있습니다. 반대편에 델파이 응용 프로그램을 만들고 다음 코드를 추가하여 DLL을 호출하십시오.
procedure ShowForm(MainFormHandle: HWND); stdcall; external 'FormDLL.dll';
procedure TMainForm.Button1Click(Sender: TObject);
begin
ShowForm(Handle);
end;
이것은 완벽하게 동작합니다.
그래서, 귀하의 문제가 무엇인지 분명하지 않습니다. 자세한 내용을 제공 할 수 있으면 그렇게하십시오.
맞습니다만 어떤 상황에서는 양식이 나타나지 않고 ShowModal을 별도의 스레드에서 호출해야합니다 ...나는 응용 프로그램을 만들었습니다. yahoomessenger가 dmall을로드하도록로드했을 때 나는 showmodal을 호출했을 때 즉시 폼이 사라져서 CreateThread를 사용 했으므로 세부 사항을 알지 못해서 그것에 대해 논평하기는 어려웠습니다. – opc0de
@ opc0de "Y! messanger를 강제로로드하여 DLL을로드하라"고 말할 때 협력 시스템을 사용합니다. –
예, 코드는 완벽하지만 SHOWMODAL이 있습니다. 하지만 dll에서 호스트하기위한 형식을 포함해야하는 경우에는 어떻게해야할까요? (제 [편집]] 참조) – Peter
- 1. 는 델파이 - DLL
- 2. LIBRTMP 델파이 : DLL 매핑
- 3. 델파이 DLL 호출
- 4. dll 삽입 C
- 5. Windows 7 DLL 삽입
- 6. 참조 된 DLL 컴파일
- 7. dll MATLAB, dll DBMS, blob?
- 8. 내가 내 델파이 코드에서 DLL 파일을 호출해야합니다 델파이
- 9. 는 DLL
- 10. DLL
- 11. 델파이 7의 dll 함수에서 부울 매개 변수
- 12. 델파이 - DLL 형식 - 힌트가 표시되지 않음
- 13. 누락 된 msvcr80.dll
- 14. ASP.net에서 컴파일 된 DLL
- 15. 델파이/네이티브 TForm GUI의 3D 그래픽
- 16. C++ DLL 삽입 구조체 값을 얻으십시오
- 17. 컴파일 된 DLL 파일로 디버그
- 18. DLL 삽입, 스레드 및 메모리 해제
- 19. WinSxS는 DLL 이름을 DLL 위치로 어떻게 변환합니까?
- 20. 델파이와 DLL 버전
- 21. WSPBuilder 난독 화 된 DLL
- 22. 런타임에로드 된 dll 이벤트 연결?
- 23. JNA DLL
- 24. dll 오프셋으로 소스 코드를 찾으려면 어떻게합니까?
- 25. C++에서`.dll` 코드를 얻는 방법
- 26. 파이썬 + numpy 코드를 C++ dll 콜백에 임베딩
- 27. dll C# AccessViolationException
- 28. 델파이 애플리케이션 용 플러그인 시스템 - bpl 대 dll?
- 29. 충돌하는 DLL
- 30. Twitterizer dll
완벽하게 동작하는 VCL 폼을 보여주는 DLL을 만드는 것은 아무런 문제가되지 않습니다. 내가 사용할 표준 예제는 Office COM 추가 기능입니다. Add-in Express를 사용하여 작성된 것 중 하나가 있습니다. 그것은 대접을합니다. 당신의 문제는 다른 곳에 있으며 당신은 어디에서나 아무 것도 주입 할 필요가 없습니다! –
이 질문은 너무 열려 있습니다. 문제의 특정 문제를 해결하면 더 좋습니다. 예를 들어, 주입 코드를 exe_think_로 만들어서 해결되는 것은 자체 코드입니다. AFAIK, 델파이 응용 프로그램에서 dll에서 오는 양식을 사용하는 일반화 된 탭 문제는 없으며 DLL에 포함 된 양식이 다른 개체와 다를 수 있으므로이 방법으로이 문제를 해결할 수있는 방법을 실제로 볼 수 없습니다. 호스트 응용 프로그램의 전역 객체. 귀하의 말로하면, 문제는 dll 코드 자체에 대한 _thinks_, 그리고 dll에 대해 exe가 생각하는 것이 아닙니다. – jachguate