1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "AnsiStrings.hpp"
#include "Unit83.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm83 *Form83;
HWND MelonHwnd=0;
bool __stdcall EnumProc(HWND hWnd,/*LPARAM*/long/*lp*/);
//---------------------------------------------------------------------------
__fastcall TForm83::TForm83(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm83::Button1Click(TObject *Sender)
{
AnsiString LigneDeCommande("C:\\Program Files (x86)\\K-Meleon\\k-meleon.exe");
LigneDeCommande+=" www.BlocklyArduino\\index.html";
PROCESS_INFORMATION ProcInfo={0};
STARTUPINFO StartInfo={0}; // name structure
StartInfo.cb = sizeof(StartInfo); // Set structure size
StartInfo.wShowWindow=SW_HIDE;
CreateProcess(NULL, LigneDeCommande.c_str() , NULL, NULL, true, DETACHED_PROCESS, NULL,NULL, &StartInfo, &ProcInfo);
WaitForInputIdle(ProcInfo.hThread, INFINITE);
Sleep(2000);
Application->ProcessMessages();
PostMessage(Handle, WM_FILLPANEL, 0 ,0);
}
//---------------------------------------------------------------------------
void __fastcall TForm83::Button2Click(TObject *Sender)
{
PostMessage(MelonHwnd,WM_CLOSE,0,0);
}
//---------------------------------------------------------------------------
bool __stdcall EnumProc(HWND hWnd,/*LPARAM*/long/*lp*/)
{
unsigned long* pPid; //LPDWORD
unsigned long result; //DWORD
void *hg; //HGLOBAL
unsigned long id;
if(hWnd==NULL)
return false;
hg = GlobalAlloc(GMEM_SHARE,sizeof(unsigned long));
pPid = (unsigned long *)GlobalLock(hg);
result = GetWindowThreadProcessId(hWnd,pPid);
if(result){
char title[110];
char className[95];
char totalStr[256];
GetClassName(hWnd,className,95);
if(AnsiContainsStr(AnsiString(className),"KMeleon Browser Window"))
MelonHwnd=hWnd;
}
else{
GlobalUnlock(hg);
GlobalFree(hg);
return false;
}
GlobalUnlock(hg);
GlobalFree(hg);
return true;
}
//---------------------------------------------------------------------
void __fastcall TForm83::FillPanel(TMessage& Msg)
{
long lp=0;
EnumWindows((WNDENUMPROC)EnumProc,lp);
if(MelonHwnd){
Label1->Caption="Fenêtre trouvée";
SetWindowLong(MelonHwnd, GWL_STYLE, GetWindowLong(MelonHwnd, GWL_STYLE));// And Not WS_CAPTION);
SetWindowPos(MelonHwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED);//
::SetParent(MelonHwnd,Panel1->Handle);
SendMessage(MelonHwnd,WM_CHANGEUISTATE,UIS_CLEAR,0);
ShowWindow(MelonHwnd,SW_SHOWMAXIMIZED);
}
} |
Partager