Delphi 2010을 사용하여 mIRC 용 dll을 작성하려고합니다. 여기에 mIRC를 도움말 파일에서 일부 정보Delphi 2010을 사용하여 mIRC 용 DLL 작성
기술 노트
이 섹션에는 mIRC를 사용하기위한 DLL을 만들 프로그래머에 대한 기술 정보가 포함되어있다.
형태이어야 호출되는 DLL의 루틴 :
INT의 __stdcall의 procname (HWND mWnd, HWND aWnd 숯불 * 데이터의 char * PARMS, BOOL 쇼 BOOL의 NOPAUSE)
mWnd 메인 mIRC 창 핸들입니다.
aWnd는 명령이 실행되는 창의 핸들입니다. 명령이 원격 스크립트에 의해 호출되는 경우 현재 활성 창이 아닐 수도 있습니다.
데이터는 DLL로 보내려는 정보입니다. 돌아 왔을 때 DLL은 mIRC가 수행 할 명령이 있으면이 변수를 채울 수 있습니다.
DLL이이 mIRC를이해야 할 원하는 것을 표시하는 정수를 반환 할 수 있습니다
0
은 mIRC를이해야/정지 처리1 mIRC를 처리
2를 계속해야 함을 의미한다는 것을 의미 의미 그것은 그 mIRC가 수행하기를 원하는 명령으로 데이터 변수를 채우고 명령을 수행 할 때 parms에 매개 변수를 채 웁니다 (있는 경우).
3은 DLL이 식별자로 $ dll()이 반환해야하는 결과로 데이터 변수를 채웠다는 것을 의미합니다.
입력 텍스트를 뒤집을 예정인 다음 코드는 정상적으로 컴파일되지만 dll 사용 결과는 예상 한 것과 다릅니다. //say $dll(mydll,Reverse,hello)
등의 mIRC에서 DLL을 호출 예
function Reverse(mWnd, aWnd: hWnd; Data, Parms: PChar; Show, NoPause: Boolean): Integer; stdcall;
var
Temp: String;
I: Integer;
begin
SetLength(Temp, Length(Data));
for I := 0 to Length(Data) do
begin
Temp[I] := Data[Length(Data)- I]; // Reversing string by retrieving characters from Data one at a time
end;
StrCopy(Data, PChar(Temp)); // Putting reversed string back into data
Result := 3;
end;
exports
Reverse;
begin
end.
은 'O'의 출력을 제공한다. 매개 변수가 'hello sailor'이면 출력은 'orilsao llhe'입니다. 코드 작업을 추적하는 데 실패했지만 데이터 값이 어떻게 변경되는지 이해할 수 없습니다. 나는 PChar 행동에 대한 내 자신의 제한된 지식이 기여 요인이라고 생각합니다. 나는 도움이 될만한 조언을 환영한다. 건배
부울이 잘못되었습니다. LongBool을 사용하십시오. 또는 BOOL. 문자열은 PWideChar가 아닌 PAnsiChar 여야합니다. 이것은 여기서 여러 번 논의되었습니다. –
이전에 여러 번 논의되었을 수도 있지만 검색 결과가 모두 누락되었습니다. 내 게시물 당시 델파이 버전 게시 델파이 7에서 PChar 동작에 대한 검색을하지 않았으며 왜 그런가?처음에는 뭔가 잘못하고 있다고 생각했습니다. 나는 코드를 붙여 넣은 이유에 대한 지식이 없습니다. 나는 그 문제가 나이라고 생각했다. Delphi 7과 Delphi 2010에서 디버깅 워치가 어떻게 다르게 작동하는지 메모리와 포인터에 대해 상기 해 보았습니다. 건배. – grasshopper
설명서를 읽어야합니다. 유니 코드 변경은 거대했고 매우 많이 문서화되었습니다. 최신 정보를 간과하지 마십시오. –