ça marche nickel aussi comme tu m'a dit.
J'ai bien les deux fichiers comme tu m'as dit
Y m'epate , Y m'epate
Je sais pas si j'ai bien fait mais j'ai créé un fichier .cpp et j'ai mis le code dedans
J'ai deux erreurs, mais ce doit etre normal, car c'est surement pas ce qu'il faut faire
Voici les deux fichiers si ça t'interesse ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Compiling... DllOle2.cpp Linking... LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/DllOle2.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. DllOle2.exe - 2 error(s), 0 warning(s)
J'ai vu des fonction comme :
J'ai vu dans mon petit aprentissage des DLLs que stdcall etait les fonctions de point d'entrée d'une DLL, mais je ne suis pas sur que ce soit celle qu'il faille utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part virtual HRESULT __stdcall raw_Quit
Pour la méthode avec MFC, je traduirais tes codes VB par ceci:
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 _System spSystem; spSystem.CreateDispatch(_T("EXTRA.System")); _Session spSessionTGC(spSystem.GetActiveSession()); //NOTE: C'est la syntaxe d'initialisation C++
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Screen spScreen(spSessionTGC.GetScreen()); spScreen.SetRow(7); spScreen.SetCol(40);
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part spScreen.SendKeys( code perso );
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 OIA spOIA(spScreen.GetOia()); do { } while(spOIA.GetXStatus() != 0);Pour la méthode avec les tli, il me semble que c'est carrément plus simple.
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Area spArea(spScreen.Area(17, 37, 17, 68, COleVariant(DISP_E_PARAMNOTFOUND, VT_ERROR), COleVariant(1))); CString strArea = spArea.GetValue(); if(strArea == _T("Veuillez Confirmer votre DEMANDE") { ... }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Pour ton erreur avec TLI, je pense que tu t'es gouré dans ton projet et que tu as fait Win32 application au lieu de Win32 dynamic-link library.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Si tu n'existait pas il faudrait t'inventer 8 -)
Je vais essayer ton code, hop hop, j'y vais .....
Snif j'ai trois erreur, et je ne vais pas t'etonner en te disant que je ne sais pas les corriger
Je sais j'abuse, ...si tu pouvais me donner la ligne pour fermer la session ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 --------------------Configuration: AppelDll - Win32 Debug-------------------- Compiling... AppelDll.cpp c:\appeldll\appeldll.cpp(3) : error C2146: syntax error : missing ';' before identifier 'spSystem' c:\appeldll\appeldll.cpp(3) : error C2501: '_System' : missing storage-class or type specifiers c:\appeldll\appeldll.cpp(3) : fatal error C1004: unexpected end of file found Error executing cl.exe. AppelDll.exe - 3 error(s), 0 warning(s)
Ce code doit être mis dans une fonction de ta DLL MFC Regular, pas n'importe où et surtout pas en dehors de toute fonction...
Et il est seulement prévu pour la version MFC. Si tu veux utiliser TLI, le code sera différent.
PS: Tu n'as pas donné la ligne en VB pour fermer la session, donc je ne peux pas te donner la ligne en C++ + MFC...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ah, j'ai encore rien compris, je croyais que l'on pouvais creer un autre projet et appeller la DLL qui serait dans le meme repertoire.
Et pour un language exterieur ????
Comment crois tu qu'il faille que j'appelle les fonctions ???
Quelle burne, j'ai oublié aussi de le mettre dans une fonction, c'est vrai est ce qu'une fonction WinMain aurait marché ???
C'est surement pas aussi simple
Y'en a qu'un qui suit ......
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 int WinMain() { // Connection à l'objet EXTRA! _System spSystem; spSystem.CreateDispatch(_T("EXTRA.System")); _Session spSessionTGC(spSystem.GetActiveSession()); //NOTE: C'est la syntaxe d'initialisation C++ // Lecture d'une ligne Area spArea(spScreen.Area(18, 02, 18, 22, COleVariant(DISP_E_PARAMNOTFOUND, VT_ERROR), COleVariant(1))); CString strArea = spArea.GetValue(); if(strArea == _T("APPLICATION DESIREE :") { MessageBox(0, "Application désirée lue", "Infos", MB_OK|MB_ICONINFORMATION); } // Ecriture Screen spScreen(spSessionTGC.GetScreen()); spScreen.SetRow(18); spScreen.SetCol(26); spScreen.SendKeys("Coucou"); spScreen.SendKeys("<Enter>"); // Boucle d'attente OIA spOIA(spScreen.GetOia()); do { } while(spOIA.GetXStatus() != 0); }
Je ne sais pas pourquoi .....mais je sens que la route qui va me mener au pays du C va etre longue.....
Je me prévoie dés ce soir, quelques séances de flagelation.....
Si si, j'insiste, je le mérite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Session.Close Set System = Nothing Set Session = Nothing
Ce qui est bizzare, c'est que quand je scanne cette DLL avec un programme fait dans un autre language et qui me donne normalement toutes les fonctions d'une DLL, il n'y a rien qui parle d'EXTRA, je n'est comme retour que ça :
Alors que si je scanne avec le meme language la DLL "c:\winnt\system32\USER32.DLL" (par exemple) j'obtiens bien toutes ses fonctions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DllCanUnloadNow DllGetClassObject DllRegisterServer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695 ActivateKeyboardLayout AdjustWindowRect AdjustWindowRectEx AlignRects AllowSetForegroundWindow AnimateWindow AnyPopup AppendMenuA AppendMenuW ArrangeIconicWindows AttachThreadInput BeginDeferWindowPos BeginPaint BlockInput BringWindowToTop BroadcastSystemMessage BroadcastSystemMessageA BroadcastSystemMessageW CallMsgFilter CallMsgFilterA CallMsgFilterW CallNextHookEx CallWindowProcA CallWindowProcW CascadeChildWindows CascadeWindows ChangeClipboardChain ChangeDisplaySettingsA ChangeDisplaySettingsExA ChangeDisplaySettingsExW ChangeDisplaySettingsW ChangeMenuA ChangeMenuW CharLowerA CharLowerBuffA CharLowerBuffW CharLowerW CharNextA CharNextExA CharNextW CharPrevA CharPrevExA CharPrevW CharToOemA CharToOemBuffA CharToOemBuffW CharToOemW CharUpperA CharUpperBuffA CharUpperBuffW CharUpperW CheckDlgButton CheckMenuItem CheckMenuRadioItem CheckRadioButton ChildWindowFromPoint ChildWindowFromPointEx CliImmSetHotKey ClientThreadSetup ClientToScreen ClipCursor CloseClipboard CloseDesktop CloseWindow CloseWindowStation CopyAcceleratorTableA CopyAcceleratorTableW CopyIcon CopyImage CopyRect CountClipboardFormats CreateAcceleratorTableA CreateAcceleratorTableW CreateCaret CreateCursor CreateDesktopA CreateDesktopW CreateDialogIndirectParamA CreateDialogIndirectParamAorW CreateDialogIndirectParamW CreateDialogParamA CreateDialogParamW CreateIcon CreateIconFromResource CreateIconFromResourceEx CreateIconIndirect CreateMDIWindowA CreateMDIWindowW CreateMenu CreatePopupMenu CreateWindowExA CreateWindowExW CreateWindowStationA CreateWindowStationW CtxInitUser32 DdeAbandonTransaction DdeAccessData DdeAddData DdeClientTransaction DdeCmpStringHandles DdeConnect DdeConnectList DdeCreateDataHandle DdeCreateStringHandleA DdeCreateStringHandleW DdeDisconnect DdeDisconnectList DdeEnableCallback DdeFreeDataHandle DdeFreeStringHandle DdeGetData DdeGetLastError DdeGetQualityOfService DdeImpersonateClient DdeInitializeA DdeInitializeW DdeKeepStringHandle DdeNameService DdePostAdvise DdeQueryConvInfo DdeQueryNextServer DdeQueryStringA DdeQueryStringW DdeReconnect DdeSetQualityOfService DdeSetUserHandle DdeUnaccessData DdeUninitialize DefDlgProcA DefDlgProcW DefFrameProcA DefFrameProcW DefMDIChildProcA DefMDIChildProcW DefWindowProcA DefWindowProcW DeferWindowPos DeleteMenu DeregisterShellHookWindow DestroyAcceleratorTable DestroyCaret DestroyCursor DestroyIcon DestroyMenu DestroyWindow DeviceEventWorker DialogBoxIndirectParamA DialogBoxIndirectParamAorW DialogBoxIndirectParamW DialogBoxParamA DialogBoxParamW DispatchMessageA DispatchMessageW DlgDirListA DlgDirListComboBoxA DlgDirListComboBoxW DlgDirListW DlgDirSelectComboBoxExA DlgDirSelectComboBoxExW DlgDirSelectExA DlgDirSelectExW DragDetect DragObject DrawAnimatedRects DrawCaption DrawCaptionTempA DrawCaptionTempW DrawEdge DrawFocusRect DrawFrame DrawFrameControl DrawIcon DrawIconEx DrawMenuBar DrawMenuBarTemp DrawStateA DrawStateW DrawTextA DrawTextExA DrawTextExW DrawTextW EditWndProc EmptyClipboard EnableMenuItem EnableScrollBar EnableWindow EndDeferWindowPos EndDialog EndMenu EndPaint EndTask EnumChildWindows EnumClipboardFormats EnumDesktopWindows EnumDesktopsA EnumDesktopsW EnumDisplayDevicesA EnumDisplayDevicesW EnumDisplayMonitors EnumDisplaySettingsA EnumDisplaySettingsExA EnumDisplaySettingsExW EnumDisplaySettingsW EnumPropsA EnumPropsExA EnumPropsExW EnumPropsW EnumThreadWindows EnumWindowStationsA EnumWindowStationsW EnumWindows EqualRect ExcludeUpdateRgn ExitWindowsEx FillRect FindWindowA FindWindowExA FindWindowExW FindWindowW FlashWindow FlashWindowEx FrameRect FreeDDElParam GetActiveWindow GetAltTabInfo GetAltTabInfoA GetAltTabInfoW GetAncestor GetAppCompatFlags GetAppCompatFlags2 GetAsyncKeyState GetCapture GetCaretBlinkTime GetCaretPos GetClassInfoA GetClassInfoExA GetClassInfoExW GetClassInfoW GetClassLongA GetClassLongW GetClassNameA GetClassNameW GetClassWord GetClientRect GetClipCursor GetClipboardData GetClipboardFormatNameA GetClipboardFormatNameW GetClipboardOwner GetClipboardSequenceNumber GetClipboardViewer GetComboBoxInfo GetCursor GetCursorFrameInfo GetCursorInfo GetCursorPos GetDC GetDCEx GetDesktopWindow GetDialogBaseUnits GetDlgCtrlID GetDlgItem GetDlgItemInt GetDlgItemTextA GetDlgItemTextW GetDoubleClickTime GetFocus GetForegroundWindow GetGUIThreadInfo GetGuiResources GetIconInfo GetInputDesktop GetInputState GetInternalWindowPos GetKBCodePage GetKeyNameTextA GetKeyNameTextW GetKeyState GetKeyboardLayout GetKeyboardLayoutList GetKeyboardLayoutNameA GetKeyboardLayoutNameW GetKeyboardState GetKeyboardType GetLastActivePopup GetLastInputInfo GetListBoxInfo GetMenu GetMenuBarInfo GetMenuCheckMarkDimensions GetMenuContextHelpId GetMenuDefaultItem GetMenuInfo GetMenuItemCount GetMenuItemID GetMenuItemInfoA GetMenuItemInfoW GetMenuItemRect GetMenuState GetMenuStringA GetMenuStringW GetMessageA GetMessageExtraInfo GetMessagePos GetMessageTime GetMessageW GetMonitorInfoA GetMonitorInfoW GetMouseMovePointsEx GetNextDlgGroupItem GetNextDlgTabItem GetOpenClipboardWindow GetParent GetPriorityClipboardFormat GetProcessDefaultLayout GetProcessWindowStation GetProgmanWindow GetPropA GetPropW GetQueueStatus GetScrollBarInfo GetScrollInfo GetScrollPos GetScrollRange GetShellWindow GetSubMenu GetSysColor GetSysColorBrush GetSystemMenu GetSystemMetrics GetTabbedTextExtentA GetTabbedTextExtentW GetTaskmanWindow GetThreadDesktop GetTitleBarInfo GetTopWindow GetUpdateRect GetUpdateRgn GetUserObjectInformationA GetUserObjectInformationW GetUserObjectSecurity GetWinStationInfo GetWindow GetWindowContextHelpId GetWindowDC GetWindowInfo GetWindowLongA GetWindowLongW GetWindowModuleFileName GetWindowModuleFileNameA GetWindowModuleFileNameW GetWindowPlacement GetWindowRect GetWindowRgn GetWindowTextA GetWindowTextLengthA GetWindowTextLengthW GetWindowTextW GetWindowThreadProcessId GetWindowWord GrayStringA GrayStringW HideCaret HiliteMenuItem IMPGetIMEA IMPGetIMEW IMPQueryIMEA IMPQueryIMEW IMPSetIMEA IMPSetIMEW ImpersonateDdeClientWindow InSendMessage InSendMessageEx InflateRect InitializeLpkHooks InitializeWin32EntryTable InsertMenuA InsertMenuItemA InsertMenuItemW InsertMenuW InternalGetWindowText IntersectRect InvalidateRect InvalidateRgn InvertRect IsCharAlphaA IsCharAlphaNumericA IsCharAlphaNumericW IsCharAlphaW IsCharLowerA IsCharLowerW IsCharUpperA IsCharUpperW IsChild IsClipboardFormatAvailable IsDialogMessage IsDialogMessageA IsDialogMessageW IsDlgButtonChecked IsHungAppWindow IsIconic IsMenu IsRectEmpty IsWindow IsWindowEnabled IsWindowUnicode IsWindowVisible IsZoomed KillSystemTimer KillTimer LoadAcceleratorsA LoadAcceleratorsW LoadBitmapA LoadBitmapW LoadCursorA LoadCursorFromFileA LoadCursorFromFileW LoadCursorW LoadIconA LoadIconW LoadImageA LoadImageW LoadKeyboardLayoutA LoadKeyboardLayoutEx LoadKeyboardLayoutW LoadLocalFonts LoadMenuA LoadMenuIndirectA LoadMenuIndirectW LoadMenuW LoadRemoteFonts LoadStringA LoadStringW LockSetForegroundWindow LockWindowStation LockWindowUpdate LockWorkStation LookupIconIdFromDirectory LookupIconIdFromDirectoryEx MBToWCSEx MB_GetString MapDialogRect MapVirtualKeyA MapVirtualKeyExA MapVirtualKeyExW MapVirtualKeyW MapWindowPoints MenuItemFromPoint MenuWindowProcA MenuWindowProcW MessageBeep MessageBoxA MessageBoxExA MessageBoxExW MessageBoxIndirectA MessageBoxIndirectW MessageBoxW ModifyMenuA ModifyMenuW MonitorFromPoint MonitorFromRect MonitorFromWindow MoveWindow MsgWaitForMultipleObjects MsgWaitForMultipleObjectsEx NotifyWinEvent OemKeyScan OemToCharA OemToCharBuffA OemToCharBuffW OemToCharW OffsetRect OpenClipboard OpenDesktopA OpenDesktopW OpenIcon OpenInputDesktop OpenWindowStationA OpenWindowStationW PackDDElParam PaintDesktop PeekMessageA PeekMessageW PostMessageA PostMessageW PostQuitMessage PostThreadMessageA PostThreadMessageW PrivateExtractIconExA PrivateExtractIconExW PrivateExtractIconsA PrivateExtractIconsW PrivateSetDbgTag PrivateSetRipFlags PtInRect QuerySendMessage QueryUserCounters RealChildWindowFromPoint RealGetWindowClass RealGetWindowClassA RealGetWindowClassW RedrawWindow RegisterClassA RegisterClassExA RegisterClassExW RegisterClassW RegisterClipboardFormatA RegisterClipboardFormatW RegisterDeviceNotificationA RegisterDeviceNotificationW RegisterHotKey RegisterLogonProcess RegisterServicesProcess RegisterShellHookWindow RegisterSystemThread RegisterTasklist RegisterWindowMessageA RegisterWindowMessageW ReleaseCapture ReleaseDC RemoveMenu RemovePropA RemovePropW ReplyMessage ResolveDesktopForWOW ReuseDDElParam ScreenToClient ScrollChildren ScrollDC ScrollWindow ScrollWindowEx SendDlgItemMessageA SendDlgItemMessageW SendIMEMessageExA SendIMEMessageExW SendInput SendMessageA SendMessageCallbackA SendMessageCallbackW SendMessageTimeoutA SendMessageTimeoutW SendMessageW SendNotifyMessageA SendNotifyMessageW SetActiveWindow SetCapture SetCaretBlinkTime SetCaretPos SetClassLongA SetClassLongW SetClassWord SetClipboardData SetClipboardViewer SetConsoleReserveKeys SetCursor SetCursorContents SetCursorPos SetDebugErrorLevel SetDeskWallpaper SetDlgItemInt SetDlgItemTextA SetDlgItemTextW SetDoubleClickTime SetFocus SetForegroundWindow SetInternalWindowPos SetKeyboardState SetLastErrorEx SetLayeredWindowAttributes SetLogonNotifyWindow SetMenu SetMenuContextHelpId SetMenuDefaultItem SetMenuInfo SetMenuItemBitmaps SetMenuItemInfoA SetMenuItemInfoW SetMessageExtraInfo SetMessageQueue SetParent SetProcessDefaultLayout SetProcessWindowStation SetProgmanWindow SetPropA SetPropW SetRect SetRectEmpty SetScrollInfo SetScrollPos SetScrollRange SetShellWindow SetShellWindowEx SetSysColors SetSysColorsTemp SetSystemCursor SetSystemMenu SetSystemTimer SetTaskmanWindow SetThreadDesktop SetTimer SetUserObjectInformationA SetUserObjectInformationW SetUserObjectSecurity SetWinEventHook SetWindowContextHelpId SetWindowLongA SetWindowLongW SetWindowPlacement SetWindowPos SetWindowRgn SetWindowStationUser SetWindowTextA SetWindowTextW SetWindowWord SetWindowsHookA SetWindowsHookExA SetWindowsHookExW SetWindowsHookW ShowCaret ShowCursor ShowOwnedPopups ShowScrollBar ShowStartGlass ShowWindow ShowWindowAsync SoftModalMessageBox SubtractRect SwapMouseButton SwitchDesktop SwitchToThisWindow SystemParametersInfoA SystemParametersInfoW TabbedTextOutA TabbedTextOutW TileChildWindows TileWindows ToAscii ToAsciiEx ToUnicode ToUnicodeEx TrackMouseEvent TrackPopupMenu TrackPopupMenuEx TranslateAccelerator TranslateAcceleratorA TranslateAcceleratorW TranslateMDISysAccel TranslateMessage TranslateMessageEx UnhookWinEvent UnhookWindowsHook UnhookWindowsHookEx UnionRect UnloadKeyboardLayout UnlockWindowStation UnpackDDElParam UnregisterClassA UnregisterClassW UnregisterDeviceNotification UnregisterHotKey UpdateLayeredWindow UpdatePerUserSystemParameters UpdateWindow User32InitializeImmEntryTable UserClientDllInitialize UserHandleGrantAccess UserLpkPSMTextOut UserLpkTabbedTextOut UserRealizePalette UserRegisterWowHandlers VRipOutput VTagOutput ValidateRect ValidateRgn VkKeyScanA VkKeyScanExA VkKeyScanExW VkKeyScanW WCSToMBEx WINNLSEnableIME WINNLSGetEnableStatus WINNLSGetIMEHotkey WaitForInputIdle WaitMessage Win32PoolAllocationStats WinHelpA WinHelpW WindowFromDC WindowFromPoint keybd_event mouse_event wsprintfA wsprintfW wvsprintfA wvsprintfW
Une DLL COM/OLE n'a besoin d'exposer que quatre fonctions, et une seule d'entre elles est nécessaire à l'instanciation d'objets COM. Les trois autres ont différentes utilités.
Si j'ai bien compris, la DLL que tu cherches à créer (basée sur MFC ou sur TLI) doit garder en mémoire un _System (ou le type équivalent en TLI) et exposer des fonctions qui agissent sur ces objets.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Je suis allé voir vers 21h30 si j'avais une réponse de toi, mais je me suis dis, il doit en avoir marre de ce boulet, ça suffit pendant toute la journée
Et je me rend compte quie comme tout bon programmeur, tu es un couche tard
Je suis content de te retrouver ce matin MEDINOC,
Tu m'a manqué, je suis sur que c'est pas réciproque
Oui exactement, je créé beaucoup de petits utilitaires qui "télécommande" cet emulateur.Si j'ai bien compris, la DLL que tu cherches à créer (basée sur MFC ou sur TLI) doit garder en mémoire un _System (ou le type équivalent en TLI) et exposer des fonctions qui agissent sur ces objets.
Tous ces utilitaires ont donc un point commun, les 4/5 commandes nécéssaires à la gestion de cet émulateur.
Au debut, j'avais fait un module que je copiais/collais ou inserais dans VB.
Mais au bout de 10 utilitaires et plus, j'ai vite compris les limites de cette methode, aucun de mes programmes n'avait le meme module pilote
Alors je me suis dit, qu'a cela ne tienne, je vais creer une DLL pour que j'envois toujours les memes ordres, en plus j'ai vu que c'est comme ça que les VRAIS programmeurs procedaient.(Windows, Office etc ..)
Et comme je suis un microbe qui essais de se tenir sur la pointe des pieds pour jouer dans la cour des grands .....
Donc fort de cette constatation, je part au splendide pays de la DLL
J'ai vite perdu le sourire, quand j'ai appris que VB ne faisait pas des "vrais" DLL, qu'il fallait modifier la BDR, et moi, ni j'aime, ni je n'ai l'autorisation de modifier la BDR à mon gré (Je ne suis pas administrateur des machines) donc c'est prendre le risque un jour d'avoir un refus de fonctionnement de mes logiciels
Alors, je me suis tourné vers un autre language sublime, simple, créé par un français (cocorico) qui est extremement rapide, car compilé en ASM immediatement, qui a la syntaxe du basic, la structure du C, d'ailleurs beaucoups de ses programmeurs sont des programmeurs C et ASM qui l'utilisent lorsqu'ils ont besoin de creer une petite appli sans avoir a sortir l'artillerie lourde et puissante du C
Il est portable pas besoin de runtime, il est completement autonome, il créé des tout petits executables, il est extensible a volonté chacun peux inserer des lib et etendre sa puissance à l'infini, il a un update a vie gratuit, et est MAJ assez souvent, une communauté et un forum international puisque comme je l'ai dit beaucoup de programmeurs C, il ne vaut que 500 Frs au depart et donc toute la vie, il sait mixer dans le meme code du basic et de l'ASM, et sait creer des DLL aussi facilement que l'on créé un exe et encore plein d'autres avantages...............
Je l'utilise depuis 3/4 ans avec passion.
Autant dire que le jour ou je l'ai decouvert, j'ai tout fait pour ne plus utiliser VB, lourd, non performant, non portable, pas de DLL, necessité du runtime 4 CD d'installe contre 3/4 disquettes pour la merveille dont je t'ai parlé.
Bref je croyais mon bonheur parfait, j'ai donc enfourché mon super language pour créer ma DLL tant désiré et la je suis tombé sur un OS, j'ai nommé l'AUTOMATION proprietaire de bilou
Il nous enerve celui la a jamais vouloir faire comme les autres
Et oui FRED (l'inventeur de la petite merveille) n'a pu inclure l'OLE car je pense qu'il n'a pas le droit
Alors des petits malins ont créé une lib COM, basé sur un code en C http://disphelper.sourceforge.net/, (tu vois quand je te dis que ce sont des programmeurs C ) car tu te rappelle on peut l'etendre a volonté.
D'ailleurs c'est eux qui m'ont donné le lien de ce genial forum, et m'ont souhaité bonne chance (Je commence à comprendre pourquoi )
Et la, ça a marché d'enfer, mais je n'aime pas trop utiliser les lib ou Dll des autres quand on a pas les sources, car on ne sait pas ce qu'il y a dedans, et quand elle n'est pas tenue a jour, ou si il y a un bug, bah ton appli elle a plus aucune valeur , un peu comme MFC en plus grand.
J'ai lu que beaucoup de programmeurs C n'etaient pas trop partisants de programmer en MFC car ils "perdaient la main" sur le code (si on peux dire).
Que le Win32 etait beaucoup plus dur, mais bien plus sur et autonome (Je cite ce que j'ai lu)
Donc pour en revenir a mes "beeeeehhhh" , je sais je suis bavard
J'ai donc fait marcher ma DLL avec cette lib "magique", mais j'ai eu un bug dans les handles et j'ai beau eu contacté l'auteur de la lib, je n'ai eu aucune reponse
Donc me revoila tout nu, toujours pas de DLL depuis 2 mois que je cherche
C'est alors que j'ai pensé au grand, magistral, incontestable C (C comme createur ) celui qui est le pere de quasi toutes les plus grosses applications qui tournent dans ce bas monde
Depuis 15 ans je reve de taper quelques lignes en C, j'ai acheté une vingtaine de livres, mais aussi le language C en disquette 5p 1/4, le language borland C++, le visual studio 6 car j'avais deja VB6, mais dans Visual studio, y'a le grand C, je me disais, et tout ça est resté plein de poussiere car à ma grande honte, j'ai pas assez de neurones pour faire tourner un language aussi compliqué et magistral que le C
Car celui qui parle le C, parle à l'oreille des microprocesseurs
Alors cete fois, je me suis dit, c'est l'occasion ou jamais, de reunir ton reve de faire un peu de language C, de creer des vrais DLL, et en plus de pouvoir donner a d'autres languages la fonction magique (il faut le dire) de l'AUTOMATION.
J'ai pris mon courage a deux mains, j'ai ouvert l'IDE Vc++, j'ai lu les livres meme au toilettes, et j'ai commencé à pleuré, car apres avoir trouvé un code qui créé les DLL, j'ai cru bettement que bilou avait incorporé le COM à la meme maniere que VB et je m'aperçois que decidement avec lui, y'a toujours un truc qui coince
Voila, toute la vérité, tout mon dur parcours, je te doit bien ça à toi qui depuis hier a la patience et la gentillesse d'aider un dechet de la programmation comme moi
Quand tu pense que je programmme depuis 26 ans car ça a toujours été une de mes passions
Depuis le ZX81, le TO7 de thomson que j'avais acheté des qu'il etait sorti à 6000 Frs et son basic resident, jusqu'a l'ATARI falcon en passant pas des dizaines de machines
Plus je programme, plus je me rend compte que je suis nul
Mais bon, je m'accroche, car meme si la prog ne m'aime pas, moi je l'aime.
C'est comme dans tous les bons couples
Pour en finir et en revenir à ta question (excuse moi) mon reve serait une DLL en TLI, car c'est apparement plus simple, et aussi plus autonome puisque ça ne passe pas par MFC, avec les fonction OLE dedans :
1/ Connection/Deconnection
2/ Positionner le curseur de l'emulateur à tel coordonnées x/y
3/ Ecrire et envoyer des caracteres speciaux
4/ Lire telle zone de texte
Comme ça dans mes applis VB et autres, je declare la DLL, je créé les fonctions :
Je met le handle, car cerise sur le ponpon, j'aurais aimé gerer plusieurs EXTRA ensembles (c'est justement la que la lib a merdé)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Declare ConnectExtra lib "DllOlee" (byval as Handle) as long Private Declare .................................... Private Declare ............................... Private Declare ............................. Private Declare ................................. 1/ ConnectExtra(Handle) et DeconnectExtra(Handle) 2/ PositionExtra(Handle, Col, Lig) 3/ EcrisEXTRA(Handle, Col, Lig, Texte$) 4/ Texte = LisExtra(Handle, Col, Lig, NbreCaracteres)
Voila mon reve depuis des mois
Bon j'me suis remis au boulot
Pour voir si j'avais bien compris, j'ai repris du debut la methode TLI qui m'a bien plu.
1/ J'ai créé un nouveau projet "Win32 Dynamic Link library" vide
2/ J'ai cliqué sur "New text File" en haut à gauche
3/ J'ai copié ta phrase magique "#import "C:\\Program Files\\E!PC\\Extra.tlb" dedans
4/ J'ai fermé le texte et quand il m'a demandé un nom, je lui ai dit "DllOle_TLI.h"
5/ J'ai chargé ce fichier "DllOle_TLI.h" dans le repertoire "Header Files"
6/ J'ai fait un "Rebuild all" (Aucune erreur)
7/ Effectivement j'ai retrouvé, deux fichiers : Extra.tli et Extra.tlh
8/ J'ai copié le texte de Extra.tlh dans le presse papier, cliqué sur "New text File" colé le presse papier et enregistré sous "DllOle_TLI.cpp"
9/ J'ai chargé ce fichier "DllOle_TLI.cpp" dans le repertoire "Source Files"
10/ J'ai fait un "Rebuild all" (Aucune erreur)
11/ J'ai obtenu une DLL toute neuve ainsi que noir de fichiers intermediaires dans le repertoire "Debug"
Et c'est la que les ateniens s'atteignirent
J'ai mis un coup de mon scanneur de DLL et j'ai une belle erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 L'instruction à "0x78001cf7" emploie l'adresse mémoire "0x10905a4d". La mémoire ne peut pas etre "read"
J'suis désespéré
Salut,
- Automation n'est pas "rien vouloir faire comme les autres", car les autres n'ont rien fait du tout (à part CORBA). Automation donne un standard binaire utilisable depuis de nombreux langages, aussi bien dans le même processus qu'en inter-processus ou même en réseau, qu'est-ce que tu veux de plus?
- Le problème d'automation avec le C, c'est que normalement on obtient deux fichiers (le .h et le .tlb) et la plupart des gens (y compris ceux de MS) ne distribuent que le .tlb. Sous Visual, ce n'est pas un problème en C++ grâce à TLI, mais ça reste un problème en C et sous MinGW. Donc, ce n'est pas la technologie qui est mauvaise, mais la façon de s'en servir.
- Il y a deux façons d'appeler des interfaces COM: La façon "compilée à l'avance" (early binding) et le late binding (qui met en scène Dispatch, IDispatch, etc.) Une interface COM est dite "duale" si on peut l'appeler des deux façons.
- TLI utilise l'early binding, le plus performant.
- En C sans fichier d'en-tête, on peut toujours se rabattre sur le late-binding. Avec un fichier d'en-tête, on utilise l'early binding.
- MFC et DispHelper utilisent le late binding.
- VB peut utiliser early-binding et late-binding, selon les cas.
- VBA et tous les langages de script utilisent le late binding.
- Si le "super langage" (dont tu n'as pas donné le nom) est compilé, son créateur pourrait tout-à-fait faire quelque chose pour utiliser COM, y compris en early binding, du moins en client. Et s'il est interprété, il pourrait utiliser COM en late binding.
- Pour la suite, je ne peux pas vraiment t'aider sans le reste du code de ta DLL...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bah, t'avoueras que c'est quand meme dommage que ce soit si compliqué à utiliser en VC++
Code : Sélectionner tout - Visualiser dans une fenêtre à part qu'est-ce que tu veux de plus?
C'est quand meme tout à lui, il aurait pu inclure une fonction CreateObject comme dans VB.
J'ai cru comprendre d'ailleurs qu'il l'avait fait dans le VC#
C'est dommage que c'est 10 ans ou plus apres son invention, qu'il est pensé à le mettre natif
D'accord, c'est super bien expliqué, meme moi j'ai compris, c'est un signe que tu es pedagogueIl y a deux façons d'appeler des interfaces COM: La façon "compilée à l'avance" (early binding) et le late binding (qui met en scène Dispatch, IDispatch, etc.) Une interface COM est dite "duale" si on peut l'appeler des deux façons.
TLI utilise l'early binding, le plus performant.
Pour l'instant c'est encore abstrait pour moi, mais je ne pense pas que j'ai besoin de performances avec mes 4 fonctions.TLI utilise l'early binding, le plus performant.
En C sans fichier d'en-tête, on peut toujours se rabattre sur le late-binding. Avec un fichier d(en-tête, on utilise l'early binding.
Alors la, ça deviens encore plus interessantMFC et DispHelper utilisent le late binding.
VB et tous les langages de script utilisent le late binding aussi.
Parce que MFC, je connais de nom et vois a peut pres à quoi ça sert
DispHelper, alors la j'suis épaté parce que je vois que tu connais, je pensais que c'etait un code inventé par un inconnu et peu utilisé, mais apparement c'est quelque chose d'assez phénoménal
Et la......on parle de VB et des script, alors ça me parle encore plus.
Donc apparement, ce serait dans le "late-binding" que serait ma solution, puisque je veux etre compatible VB
J'ai utilisé le terme de "super language", mais ça n'engage que moi et tous ceux qui l'utilisent.Si le "super langage" (dont tu n'as pas donné le nom) est compilé, son créateur pourrait tout-à-fait faire quelque chose pour utiliser COM, y compris en early binding, du moins en client. Et s'il est interprété, il pourrait utiliser COM en late binding.
Et comme je sais que ces utilisateurs sont des C-MAN, ça force le respect non ???
Je pense que des programmeurs de ta trempe lorsqu'ils se penchent sur un language et quand ils arrivent du C, ont peut leur faire confiance quand à la qualité d'un language.
Il y a surement d'autres languages aussi valable que celui-ci, mais je suis tombé sur lui, en cherchant un language performant, simple, et autonome.
Et puis je ne veux pas entrer dans la polémique des languages, quel est le meilleur, le plus fort....mon papa est plus fort que le tiens ....
Chacun voit le midi à sa porte, l'important, c'est qu'un language convienne à celui qui l'utilise
Je n'ai pas donné le nom, par respect pour vous, on ne viens pas la "gueule enfariné" fanfaronner et parler d'un autre language sur un forum aussi respectable que celui-ci surtout dans une rubrique concernant le C, language innégalé par sa puissance.
Je ne savais pas si j'avais le droit, donc dans l'ignorance s'abstenir
Maintenant si, le nom t'interesse et si j'ai le droit, evidemment que je donnerais le nom pour que si tu le desire tu puisse te faire une idée par toi meme
Je croyais que le COM etait copyright
Ce que je sais, c'est qu'il lui manque cette fonction, car certaines personnes de son forum, lui ont demandé si il pouvait pas inclure DispHelper
Moi tout ça me dépasse......c'est justement le fort de ce language offrir à des inhibés du bulbe comme moi, la puissance d'un language bas niveau
Je t'ai juste tout expliqué en détail, afin que tu comprenne ma position et mes attentes, car je pense que tu as autre chose à faire que de jouer aux devinettes et perdre du temps à aider les gens à l'aveuglette sans vraiment savoir ce qu'il désirent
J'ai beaucoup trop de respect pour vous, pour soit vous gener, soit vous faire perdre du temps, ou vous déplaire.
Vous etes mes "héros", et la premiere chose que l'on doit à un MAITRE, c'est le respect et l'ecoute.
Quel code de DLL ???Pour la suite, je ne peux pas vraiment t'aider sans le reste du code de ta DLL...
Ouuuuiiiiinnn !!! je me tue à te dire que ça fait 2 mois que je veux faire cette DLL J'ai pas de DLL
Parle tu de celle la ???
Mais si elle est TLI, ça ne gazouille pas avec VB non ???
Tu m'as dit qu'on pouvait si on avait le fichier de tete on pouvait faire du "early binding", et la je l'ai pas le fichier de tete ???
J'suis un peu paumé
Non, j'ai juste regardé ton lien. Rien qu'avec le nom, on peut deviner que DispHelper utilise le late binding (parce que le nom contient "disp", comme "Dispatch").
Late binding/Early binding, c'est seulement une distinction pour COM. Puisque tu veux faire une DLL non-COM pour appeler la DLL COM d'Extra, il n'y aura pas de distinction pour l'appel de ta DLL.Donc apparement, ce serait dans le "late-binding" que serait ma solution, puisque je veux etre compatible VB
Ben, c'est surtout pour pouvoir mentionner le langage. Je ne savais pas comment l'appeler, justement car tu n'as pas donné le nom.J'ai utilisé le terme de "super language", mais ça n'engage que moi et tous ceux qui l'utilisent.
Et comme je sais que ces utilisateurs sont des C-MAN, ça force le respect non ???
Je pense que des programmeurs de ta trempe lorsqu'ils se penchent sur un language et quand ils arrivent du C, ont peut leur faire confiance quand à la qualité d'un language.
Il y a surement d'autres languages aussi valable que celui-ci, mais je suis tombé sur lui, en cherchant un language performant, simple, et autonome.
Et puis je ne veux pas entrer dans la polémique des languages, quel est le meilleur, le plus fort....mon papa est plus fort que le tiens ....
Chacun voit le midi à sa porte, l'important, c'est qu'un language convienne à celui qui l'utilise
Je n'ai pas donné le nom, par respect pour vous, on ne viens pas la "gueule enfariné" fanfaronner et parler d'un autre language sur un forum aussi respectable que celui-ci surtout dans une rubrique concernant le C, language innégalé par sa puissance.
Je ne savais pas si j'avais le droit, donc dans l'ignorance s'abstenir
Maintenant si, le nom t'interesse et si j'ai le droit, evidemment que je donnerais le nom pour que si tu le desire tu puisse te faire une idée par toi meme
Donc si j'ai bien compris, ce langage peut utiliser des DLLs normales mais pas des objets COM?
Si dans ta DLL il y a juste les headers TLI, tu n'iras pas loin avec.Quel code de DLL ???
Ouuuuiiiiinnn !!! je me tue à te dire que ça fait 2 mois que je veux faire cette DLL J'ai pas de DLL
Parle tu de celle la ???
Mais si elle est TLI, ça ne gazouille pas avec VB non ???
J'suis un peu paumé
Les headers TLI servent juste à permettre à ta DLL d'utiliser facilement la DLL COM d'Extra. Après, c'est à toi (peut-être avec de l'aide) d'écrire les fonctions de la DLL elle-même...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Trop fort !!!!Non, j'ai juste regardé ton lien. Rien qu'avec le nom, on peut deviner que DispHelper utilise le late binding (parce que le nom contient "disp", comme "Dispatch").
Bon d'accord, j'ai compris (enfin j'espere )Late binding/Early binding, c'est seulement une distinction pour COM. Puisque tu veux faire une DLL non-COM pour appeler la DLL COM d'Extra, il n'y aura pas de distinction pour l'appel de ta DLL.
Bon ben, comme je ne sais toujours pas si je peux en parler, ou si ça t'interesse, on va l'apeller le "language masqué" = LMBen, c'est surtout pour pouvoir mentionner le langage. Je ne savais pas comment l'appeler, justement car tu n'as pas donné le nom.
Donc si j'ai bien compris, ce langage peut utiliser des DLLs normales mais pas des objets COM?
Alors LM non seulement peut appeller une DLL normales avec seulement 1 ligne, mais ce qui est formidable, c'est qu'il les créé
Me demande pas comment, quel standard ou quoi ou qu'est ce, parce que j'en sait fichtrement rien
Tout ce que je sais, c'est que je choisi dans le menu, exe ou dll et quand je compile comme dans le C, il me créé ce que je lui ai demandé.
Et le miracle c'est que je peux utiliser ses DLL dans VB6 sans aucun probleme.
Sans la declarer, pas de BDR, je donne le chemin, ou la met dans le repertoire racine, et c'est magique, un petit "private declare" et c'est comme si VB avait les fonctions en interne.
Ce qui est chiant c'est que l'on ne peux pas faire l'inverse, puisque les DLL VB ne sont pas des DLL standard.
Quand j'ai parlé des DLL dans son forum, on m'a dit que LM creait des DLL semblables au C.
Et moi ça m'a suffit comme "explicage"
Donc je me suis dit que si C il sait manier le COM, et je savais qu'il sait aussi creer les vrais DLL, normal c'est lui qui les a inventé et bah la boucle etait bouclée
T'es en train de me dire avec beaucoup de tact et de douceur, que j'suis mort quoi ......Si dans ta DLL il y a juste les headers TLI, tu n'iras pas loin avec.
Les headers TLI servent juste à permettre à ta DLL d'utiliser facilement la DLL COM d'Extra. Après, c'est à toi (peut-être avec de l'aide) d'écrire les fonctions de la DLL elle-même...
Y'a une chose que je ne comprend pas.(Tu va me dire, y'en a pas qu'une ..)
Y'a pas un moyen de faire "CreateObject" et creer une session facilement en C, sans avoir a fouiller dans les DLL d'extra ????
Puisque justement c'est un standard .....
Car VB, juste 3 lignes un create un get, un active session "ExtraSystem" et hop on est connecté, et VB il connait pourtant pas Extra.
Alors pourquoi VC++, il sait pas faire lui, alors qu'il est mille fois plus puissant que VB
Non, juste qu'il y a un minimum de boulot après l'importation des headers.T'es en train de me dire avec beaucoup de tact et de douceur, que j'suis mort quoi ......
Le problème, c'est que justement en C, on est supposé utiliser un fichier d'en-tête (.h) au lieu de la bibliothèque de types (.tlb). Heureusement, en C++ sous Visual, ce problème est résolu grâce à TLI.Y'a une chose que je ne comprend pas.(Tu va me dire, y'en a pas qu'une ..)
Y'a pas un moyen de faire "CreateObject" et creer une session facilement en C, sans avoir a fouiller dans les DLL d'extra ????
Puisque justement c'est un standard .....
Ou bien, tu peux utiliser DispHelper à la place, qui apparemment est utilisable à la fois en C et en C++, en quelques lignes. D'après le peu que j'ai vu sur le site, on peut traduire pratiquement chaque ligne VB en une ou deux lignes de code C ou C++ utilisant DispHelper.
Ce qu'il faut savoir, c'est que dans aucun des cas on n'a besoin de fouiller dans les DLLs d'Extra. Simplement, en C, quand on n'a pas disphelper ou bien quand on ne peut utiliser le late-binding, on peut être forcé de fouiller dans le .tlb (qui peut être caché dans une DLL, mais c'est rare).
Si tu choisis d'utiliser DispHelper, tu pourras faire facilement ton code en C, sans soucis de #import ni de TLI etc.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bon d'accord, tu sais moi tout ce que je cherche à faire c'est envoyer 4 fonction à ce foutu #'¤@[-€ d'EXTRA.Si tu choisis d'utiliser DispHelper, tu pourras faire facilement ton code en C, sans soucis de #import ni de TLI etc
Et ceci avec le moyen le plus simple possible
Dans LM c'est justement cette fonction "DispHelper" que le createur de la lib utilise et a adapté.
Et c'est avec cette lib que j'ai le probleme de handle.
Mais c'est suremment de ma faute, enfin j'espere.
Tu as raison, ce serait une solution, d'utiliser "DispHelper" au moins apparement on a tout le code source
Encore merci , merci et merci de ta bonté, heureusement que tu etais la...autrement je me serais cru seul au monde
Bon je vais essayer, hop hop, mais en plus, tu va rire, je parle l'anglais comme une vache espagnole, ça promet ......
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager