C++/C#에서 솔루션을 개발하는 데 어려움을 겪고 있습니다. Windows 서비스 및 WCF 및 소켓을 통해이 서비스와 통신하는 사용자 응용 프로그램에 의해 관리되는 DLL이 있습니다. DLL은 비디오 캡처 보드를 관리하며 캡처중인 비디오를 창 핸들 (그림 상자 또는 패널)에서 작성하는 기능을 가지고 있습니다.C# Panel/Picturebox에서 문제 발생
내가 뭘 하려는지 : 그림 상자를 만들고이 핸들로 DLL 함수 startpreview를 호출하는 서비스에 여물 쓰레기 WCF를 전달합니다.
문제점 : 서비스 응용 프로그램을 사용자 응용 프로그램으로 실행할 때 모든 것이 제대로 작동하지만 Windows 서비스로 실행하면 startpreview 함수가 내 핸들에 쓰지 않습니다.
누군가 내가 이것을 어떻게 해결할 수 있는지 알고 있습니까? 최고 감사합니다.
@Edit
이 코드는 해당 PictureBox를 생성하고 flowlayoutpanel에 첨부합니다. WCF (WCFVideoMethods.ClientStartPreview)를 통해 서비스와 통신하는 사용자 응용 프로그램에서 실행됩니다. '
PictureBox videoPanel = new PictureBox();
videoPanel.Width = flpMonitor.Width;
videoPanel.Height = flpMonitor.Height;
/// Se for necessário invoke, invoca o metodo de adicionar um componente ao flowlayoutpanel
if (flpMonitor.InvokeRequired)
{
flpMonitor.Invoke(new MethodInvoker(delegate
{
flpMonitor.Controls.Add(videoPanel);
}));
}
/// Caso contrário, chama o método normalmente.
else
{
flpMonitor.Controls.Add(videoPanel);
}
/// Se for necessário invoke para o panel de video, invoca o metodo de inicializar o preview nele
if (videoPanel.InvokeRequired)
{
videoPanel.Invoke(new MethodInvoker(delegate
{
WCFVideoMethods.ClientStartPreview(selectedPos, videoPanel.Handle, new Rectangle(0, 0, videoPanel.Size.Width, videoPanel.Size.Height), true, 0x0080, 20, isAudioActive);
}));
}
/// caso contrário, chama o metodo normalmente.
else
{
WCFVideoMethods.ClientStartPreview(selectedPos, videoPanel.Handle, new Rectangle(0, 0, videoPanel.Size.Width, videoPanel.Size.Height), true, 0x0080, 20, isAudioActive);
}
이
는 서비스public Boolean StartPreview(int posNo, IntPtr _handle, Rectangle _rect, Boolean _ovl, int _format, int _rate, Boolean isAudioActive)
{
Boolean ret = true;
int channel = GetPosChannel(posNo);
if (!startPrev(channel, _handle, _rect, _ovl, _format, _rate))
{
ret = false;
}
if (isAudioActive)
{
if (!startAudioPrev(channel))
{
ret = false;
}
}
return ret;
}
startPrev (I 핸들에 쓸 필요가있어서)은 C++ DLL 방식의 대리자 인에 StartPreview 방법을 실행하고 난 돈 코드에 액세스 할 수 없습니다 .....
다른 예제 코드를 표시하면 문제를 이해하고 적절한 대답을 얻을 수 있습니까? – Miller
Windows 서비스 용 GUI를 추가 하시겠습니까? – Matt
아니요. 간단히 말해서 나는 서비스가 윈도우 폼 핸들에 쓰기를 원한다. –