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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
Variant vbProj = vXLWorkbook.OlePropertyGet("VBProject");
vMSExcel.OlePropertyGet("VBE").OlePropertyGet("ActiveVBProject") = vbProj;
vMSExcel.OlePropertyGet("VBE").OlePropertyGet("MainWindow").OlePropertySet("Visible", true);
//vMSExcel.OlePropertyGet("VBE").OlePropertyGet("MainWindow").OlePropertySet("Name", "essais.prn");
vXLWorkbook.OlePropertyGet("VBProject");
//vMSExcel.OlePropertyGet("VBE").OlePropertyGet("CommandBars", 1).OlePropertyGet("FindControl", 2578, true).OleFunction("Execute");
HWND h = FindWindow("wndclass_desked_gsk", NULL);
HWND h1 = FindWindowEx(h, NULL, "MsoCommandBarDock", "MsoDockLeft");
HWND h2 = FindWindowEx(h, h1, "MsoCommandBarDock", "MsoDockRight");
HWND h3 = FindWindowEx(h, h2, "MsoCommandBarDock", "MsoDockTop");
// les deux Handles suivant dependent de h3
HWND h4 = FindWindowEx(h3, NULL, "MsoCommandBar", "Standard");
HWND h5 = FindWindowEx(h3, h4, "MsoCommandBar", "Barre de menus");
// on selectionne la Barre de menus
SetForegroundWindow(h5);
// on active le premier element de la Barre de menus pour cela on simule "Alt"
PostMessage(h5, WM_KEYDOWN, VK_MENU, 0);
PostMessage(h5, WM_KEYUP, VK_MENU, 0);
// on simule la fleche vers la droite pour se deplacer dans le menu
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0); // touche enfoncee
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0); // touche relachee
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0);
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0);
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0);
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0);
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0);
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0);
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0);
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0);
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0);
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0);
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0);
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0);
PostMessage(h5, WM_KEYDOWN, VK_RIGHT, 0);
PostMessage(h5, WM_KEYUP, VK_RIGHT, 0);
// on simule la fleche vers le bas pour derouler le menu selectionne
PostMessage(h5, WM_KEYDOWN, VK_DOWN, 0); // touche enfoncee
PostMessage(h5, WM_KEYUP, VK_DOWN, 0); // touche relachee
PostMessage(h5, WM_KEYDOWN, VK_DOWN, 0);
PostMessage(h5, WM_KEYUP, VK_DOWN, 0);
PostMessage(h5, WM_KEYDOWN, VK_DOWN, 0);
PostMessage(h5, WM_KEYUP, VK_DOWN, 0);
PostMessage(h5, WM_KEYDOWN, VK_DOWN, 0);
PostMessage(h5, WM_KEYUP, VK_DOWN, 0);
PostMessage(h5, WM_KEYDOWN, VK_DOWN, 0);
PostMessage(h5, WM_KEYUP, VK_DOWN, 0);
// on simule la touche entree pour afficher la boite de dialogue
// touche enfoncee
PostMessage(h5, WM_KEYDOWN, VK_RETURN, 0);
PostMessage(h5, WM_KEYUP, VK_RETURN, 0); // touche relachee
// ici la boite de dialogue est ouverte
// on recupere le Handle de la premiere page de la boite de dialogue
Sleep(500); // voir ci dessus SendMessage ?
HWND h66 = FindWindow("#32770", "VBAProject Mot de passe");
HWND h77 = FindWindowEx(h66, NULL, "Edit", NULL);
HWND h88 = FindWindowEx(h66, NULL, "Button", "OK");
// mot de passe
String MPassWord = "jp";
// on selectionne le TEdit Mot de passe
SendMessage(h77, WM_SETTEXT, 0, (LPARAM) MPassWord.c_str());
//Sleep(500);
// ici on valide par OK
// le programme est verrouille
// on donne le Focus au Boutton "OK"
SetForegroundWindow(h88);
// on simule la touche entree
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
Sleep(1000);
HWND h6 = FindWindow("#32770", "VBAProject - Propriétés du projet");
HWND h7 = FindWindowEx(h6, NULL, "#32770", NULL);
// on selectionne la Boite de dialogue
SetForegroundWindow(h7);
// on simule la combinaison Shift+Tab
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
// on envoye le code clavier pour changer de page
// fleche vers la droite
keybd_event(VK_RIGHT,0,0,0);
// temporisation de stabilisation du changement de page
Sleep(500); // voir ci dessus SendMessage ?
// ici on recupere le Handle de la deuxieme page de la boite de dialogue
// on recupere le Handle des TEdit pour y inscrire le Password
HWND h8 = FindWindowEx(h6, NULL, "#32770", NULL);
HWND h9 = FindWindowEx(h8, NULL, "Button", "&Verrouiller le projet pour l'affichage");
HWND h10 = FindWindowEx(h8,h9, "Edit", NULL);
HWND h11 = FindWindowEx(h8, h10, "Edit", NULL);
HWND h12 = FindWindowEx(h6, NULL, "Button", "OK");
// on donne le Focus au CheckBox
SetForegroundWindow(h9);
// on simule l'appui de la barre d'espace pour cocher le CheckBox
keybd_event(VK_SPACE,0,0,0);
keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0);
// mot de passe
//String MPassWord = "Mot_Pass";
// on selectionne le TEdit Mot de passe
SendMessage(h10, WM_SETTEXT, 0, (LPARAM) MPassWord.c_str());
// on selectionne le TEdit Confirmer le mot de passe
SendMessage(h11, WM_SETTEXT, 0, (LPARAM) MPassWord.c_str());
// ici on valide par OK
// le programme est verrouille
// on donne le Focus au Boutton "OK"
SetForegroundWindow(h12);
// on simule la touche entree
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0); |
Partager