Вопрос назрел после того, как я познакомился с WlxMplayer от Duble Commander.
- Код: Выделить всё
- procedure TForm1.Button3Click(Sender: TObject);
 {$IFDEF LCLQT}
 begin
 xid:= QWidget_winId(QWidgetH(AWidget));
 hWidget:= AWidget;
 end;
 {$ELSE}
 var
 widget,
 mySocket:PGtkWidget; //the socket
 lst:PGlist;
 begin
 lst:=gtk_container_children(GTK_CONTAINER(PGtkwidget(panel1.Handle)));
 if lst=nil then exit;
 widget := PGtkWidget(lst^.data);
 //gtk_vbox_new(FALSE,0);
 mySocket := gtk_socket_new();
 gtk_container_add (GTK_CONTAINER(widget), mySocket);
 gtk_widget_show(mySocket);
 gtk_widget_show(widget);
 //*****
 //gtk_container_add (GTK_CONTAINER (PGtkWidget(Awidget)), widget);
 gtk_widget_realize(mySocket);
 //gtk_widget_hide(PGtkWidget(AWidget));
 {$IFDEF LCLGTK}
 xid:=(PGdkWindowPrivate(widget^.window))^.xwindow;
 {$ENDIF}
 {$IFDEF LCLGTK2}
 xid:=GDK_WINDOW_XID(widget^.window);
 {$ENDIF}
 hWidget:= THandle(widget);
 pr:=TProcess.Create(nil);
 pr.Options := Pr.Options + [{poWaitOnExit,}poNoConsole{,poUsePipes}]; //mplayer stops if poUsePipes used.
 pr.CommandLine:='mplayer' + ' ' + sg.cells[1,sg.row] +' -wid '+IntToStr(xid);
 pr.Execute;
 end;
Логика кода понятна : ищется id виджета и затем этот id передается в качестве параметра в mplayer.
Но здесь GTK и QT. А как это сделать в MSE ?







 (дальше идет парад радостных нецензурных слов).
 (дальше идет парад радостных нецензурных слов).