Bonjour, je crois que c'est la question la plus con que j'ai jamais pose sur ce forum :
comment fait on pour avoir une chaine terminee par un caractere null ?
a part faire : chaine = chaine1 & vbNullchar
Bonjour, je crois que c'est la question la plus con que j'ai jamais pose sur ce forum :
comment fait on pour avoir une chaine terminee par un caractere null ?
a part faire : chaine = chaine1 & vbNullchar
Pour quelle finalité ?
Null représente une absence d'info, donc je ne comprends pas :
- pourquoi tu devrais concaténer une chaîne à un "Null"
- comment tu pourrais le faire techniquement![]()
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Que dire de
Code : Sélectionner tout - Visualiser dans une fenêtre à part chaine = chaine1 & Null
bah c'est comme en C/C++ koi : les chaines se terminent par un caractere null de fin de chaine, en l'occurence le '\0'
la finalite :
jutilise l'API Win32 > fonction SendMessage(hWnd,WM_SETTEXT,0,ByVal chaine)
et ca ne marche pas... la fonction me retourne 0, et d'apres mon ami MSDN, cela signifie qu'il n'y a pas assez de place dans l'edit (represente par le handle hwnd) pour placer ma chaine...
il est specifie que le dernier argument de cette fonction est : null-terminated string...
alors je pense que le PB vient de la, voila![]()
Cette méthode ne te convient pasEnvoyé par VoLc0m
:
Si tu préfères...
Code : Sélectionner tout - Visualiser dans une fenêtre à part chaine = chaine1 & Chr(0)
bah justement j'ai essaye avec cette methode... ptet ke le pb vient pas de la, si c'est le cas... >![]()
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part chaine = chaine1 & vbCrLfSi ça ne marche pas, dis nous ce qui ne vas pas, car je pense que dans ce cas, c'est que l'on a mal saisi le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part chaine = chaine1 & vbCr
ue ca marche pas
Bon je vais expliker le pb en detail alors ^^
J'utilise l'API Win32 en VB pour lancer IE avec CreateProcess(), qui me renvoi ainsi le handle de mon process IE.
Ensuite je descends dans la hierarchie des elements IE jusqu'au Edit (endroit ou l'on saisit l'URL). J'obtiens son Handle, et j'ai verifie que ceci est le bon handle... donc jusque la no problem.
Le pb en lui meme :
je souhaite changer l'URL dans l'EDIT d'IE en envoyant le message WM_SETTEXT.
ce code est donc cense me modifier la valeur de la barre d'addresse dans IE... et ca marche pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 lSuccess = SendMessage(hWnd, WM_SETTEXT, 0, ByVal buffer)
le sendmessage me retourne 0 dans LSuccess, ce qui signifie dapres la doc sur MSDN, qu'il n'y a pas assez de place dans l'EDIT pour ecrire ma chaine (buffer). De plus l'argument buffer ici doit etre une chaine terminee par un caractere null.
A precise que j'ai declare : dim buffer as string
buffer = "http://www.google.fr"
J'espere avoir ete clair![]()
C'est le 3eme jour que je suis sur ce probleme... javance pu lol
Et comment est déclaré SendMessage
Code : Sélectionner tout - Visualiser dans une fenêtre à part buffer = "http://www.google.fr" & Chr(0):
Bon... jvais etre vulgaire, mais tanpis :
je suis un gros con :
j ai mis ma constante WM_SETTEXT en : PRIVATE dans un autre module !!!!!
normal que ca marchai pas!!!!
![]()
Est-ce que tu pourrais nous donner ton code, il me semble bien intéressant... ou au moins nous donner un petit exemple de manipulation des composants d'une autre fenêtre...
pa de prob : c'est plus du Windows Developpement ... me bannissez pa du forum !!!![]()
alors ce code permet de lancer une instance d'IE et de changer l'url, pour le faire naviguer en quelque sorte, en utilisant l'API win32 uniquement :
le seul truc pas cool pour le moment, c'est le fait que je prends un peu au hasard... la fenetre IE (findwindow()) il serait plus propre de trouver le handle du thread en fonction du handle du process, mais j'y travaille
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 'API to manage Process Public Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadId As Long End Type Public Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type Public Const NORMAL_PRIORITY_CLASS = &H20& Public Const INFINITE = -1& Public Const WM_GETTEXT = &HD Public Const WM_GETTEXTLENGTH = &HE Public Const WM_SETTEXT = &HC Public Const WM_KEYDOWN = &H100 Public Const VK_RETURN = &HD Public Declare Function CreateProcess Lib "kernel32" _ Alias "CreateProcessA" _ (ByVal lpApplicationName As String, _ ByVal lpCommandLine As String, _ lpProcessAttributes As Any, _ lpThreadAttributes As Any, _ ByVal bInheritHandles As Long, _ ByVal dwCreationFlags As Long, _ lpEnvironment As Any, _ ByVal lpCurrentDriectory As String, _ lpStartupInfo As STARTUPINFO, _ lpProcessInformation As PROCESS_INFORMATION) As Long Public Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Public Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hWnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Public Declare Function FindWindowEx Lib "user32" _ Alias "FindWindowExA" (ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long 'create a new IE process sInfo.cb = Len(sInfo) lSuccess = CreateProcess(sNull, _ HandleRoot(GV.IE4PathNT, "iexplore.exe"), _ ByVal 0&, _ ByVal 0&, _ 1&, _ NORMAL_PRIORITY_CLASS, _ ByVal 0&, _ sNull, _ sInfo, _ pInfo) Wait (5) hWnd = FindWindow("IEFrame", vbNullString) hWnd = FindWindowEx(hWnd, 0, "WorkerW", vbNullString) 'get the handle of the Edit (URL on IE) hWnd = FindWindowEx(hWnd, 0, "ReBarWindow32", vbNullString) hWnd = FindWindowEx(hWnd, 0, "ComboBoxEx32", vbNullString) hWnd = FindWindowEx(hWnd, 0, "ComboBox", vbNullString) hWnd = FindWindowEx(hWnd, 0, "Edit", vbNullString) 'move to another page lSuccess = SendMessage(hWnd, WM_SETTEXT, 0, ByVal "http://www.google.fr") lSuccess = SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0)
Enjoy!![]()
Partager