2011-04-05 8 views

답변

3

나는 WM_COPYDATA가 이것을 수행하는 완벽한 방법이라고 말할 수 있습니다. WM_COPYDATA에 대한 메시지 처리기를 구현하기 위해 델파이 기본 폼을 가져와야합니다. 델파이 끝에

그것은 다음과 같은 :

TMyMainForm = class(TForm) 
protected 
    procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA; 
end; 

procedure TMyMainForm.WMCopyData(var Msg: TWMCopyData); 
begin 
    //do something with Msg.lpData 
end; 

귀하의 VB 코드를 델파이 기본 폼의 창 핸들을 얻는해야합니다.

+0

안녕하세요. 도움을 주셔서 감사합니다.받는 프로그램의 핸들을 가져 오는 방법을 묻는 것이 필요합니다. VB에서 보내는 앱에 대해 Me.Handle을 사용할 수는 있지만 수신 핸들로 입력 한 것, 나는 아무런 결과도 얻지 못할 것이다. hwnd는 긴 숫자를 보낸다. 예를 들어 4759178910518738944는 명령이 전송 될 때마다 바뀐다. 또한 수동으로 델파이 창 핸들을 VB에서 처리하려고 시도했다. 수신기 PID는 "pid = 쉘 (C : \ Receive.exe, vbNormalFocus) ".. VB에서 델파이를 시도 할 때 아무런 결과가 없지만 VB에서 VB로 OK이고 델파이로도 OK입니다. 내가 뭘 잘못하고 있니? :-) – Fred

+0

FindWindowEx를 호출하여 Delphi 창 캡션 및 창 클래스 이름을 전달합니다. 당신은 Spy ++에서 이것을 찾을 수 있습니다. EnumWindows를 호출하여 최상위 창을 열거합니다.이 중 하나가 사용자의 것입니다. –

+0

Dim iHwnd As LongDim SS As String = "테스트 문자열 30 자 미만" Dim ls As Integer = Len (SS) Dim cds As는 CopyDataStruct = 새 CopyDataStruct를 {.dwData = 0, .cbData = ls,. 035, "Receive" SendMessage (iHwnd, & H4A, Me.Handle, cds) 이것은 내가 사용하는 VB 코드 중 일부입니다. CopyDataStruct를 보내는 Delphi 프로그램 잘 작동하는 "수신"프로그램,하지만 동일한 문자열을 보내 VB를 사용하여 지금까지 성공하지 못했습니다. 내가 할 필요가 구체적으로 뭐야? – Fred

0

이것은 DDE를 사용하는 것과 비슷합니다. 또 다른 방법은 문자열을 레지스트리의 임시 영역에 쓴 다음 다른 프로그램을 호출하여이를 읽은 다음 임시 레지스트리 키를 삭제하는 것입니다. 명령 줄에서 문자열을 매개 변수로 전달하고 프로그램을 실행할 수도 있습니다.