
tatino (Normal User)
Rookie
    
Messaggi: 27
Iscritto: 10/09/2013
|
Buona sera ragazzuoli!
Una curiositā a cui non riesco a dare risposta...
Come č possibile che il numero di handle di una finestra richiamata mi vari da applicazione ad applicazione?
Mi spiego meglio:
se creo un progetto nuovo e pulito il codice funziona alla grande, appena l'ho implementato nell'applicazione definitiva non funge ed il motivo č presto trovato..il progetto semplice trova l'handle di finestra corretto..mentre nell'applicazione definitiva mi restituisce un handle lunghissimo che non c'entra nulla.
Ripeto, non credo sia un problema di codice in sč ma mi chiedo come mai la stessa funzione mi vā a restituire due handle diversi per la stessa finestra cercata 
vi allego uno screen, il popup di sinistra č l'handle corretto.
Grazie e buona serata!
Salvo.
Ultima modifica effettuata da tatino il 14/11/2013 alle 19:51 |
|

()
Newbie
    
Messaggi:
Iscritto:
|
Evidentemente c'č qualche differenza nei due progetti.
|
|

tatino (Normal User)
Rookie
    
Messaggi: 27
Iscritto: 10/09/2013
|
Sicuramente si, ma a livello di cosa?
Le variabili sono le stesse, cosa puo' influenzare questa differenza?
Ho fatto la prova ad importare il form del progetto funzionante nel progetto definitivo e genere gli stessi handle del file allegato.
|
|

()
Newbie
    
Messaggi:
Iscritto:
|
Ad esempio la dichiarazione della API.
Ma se non mostri i codici dei due progetti, come si fa?
|
|

tatino (Normal User)
Rookie
    
Messaggi: 27
Iscritto: 10/09/2013
|
Ma certo ci mancherebbe, non l'ho fatto per il semplice fatto che sono identici.
Progetto funzionante:
Codice sorgente - presumibilmente VB.NET |
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private 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 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Private Const EM_REPLACESEL = &HC2 Private Const WM_KEYDOWN = &H100 Private Const WM_KEYUP = &H101 Private Const VK_RETURN = &HD Public Sub setnewtext(ByVal strBarcode As String) Dim hWndForm As Long Dim hTxtBox As Long ' cerco la finestra hWndForm = FindWindow(vbNullString, "titolo_programma") 'stampo l'handle MsgBox(hWndForm) If (hWndForm = 0) Then MsgBox("L'applicazione cercata non č attiva.", vbExclamation) Exit Sub End If ' cerco il textbox che mi serve hTxtBox = FindWindowEx(hWndForm, 0&, "Edit", vbNullString) If (hTxtBox = 0) Then Exit Sub End If 'invio il testo piu' tasto invio di conferma SendMessage(hTxtBox, EM_REPLACESEL, 0&, CStr(strBarcode)) SendMessage(hTxtBox, WM_KEYDOWN, VK_RETURN, 0) SendMessage(hTxtBox, WM_KEYUP, VK_RETURN, 0) End Sub
|
Il codice del programma completo č lo stesso identico inserito in una nuova classe e richiamato dalla funzione.
Che parte del codice puo' essere utile riportare?
Ultima modifica effettuata da tatino il 14/11/2013 alle 20:21 |
|

()
Newbie
    
Messaggi:
Iscritto:
|
Quelle dichiarazioni sono sbagliate e provengono da programmi VB6.
E' difficile che funzioni qualcosa e se succede č veramente un caso.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As IntPtr, ByVal hWnd2 As IntPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As IntPtr
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
|
|

tatino (Normal User)
Rookie
    
Messaggi: 27
Iscritto: 10/09/2013
|

Incredibile 
caro nessuno, non conosco il tuo nome ma grazie mille!
sono funzioni che utilizzavo in VB6 e le avevo riciclate in quanto uso davvero poco le API.
La cosa che mi ha tratto in inganno č che comunque effettuando test su progetti temporanei mi andava tutto bene.
Che dire, ti ringrazio ancora e grazie per il tempo dedicatomi.
A buon rendere.
Salvo.
|
|

Snogar (Normal User)
Pro
    
Messaggi: 146
Iscritto: 09/01/2012
|
Scusa ma non fai pima a fare cosė per recuperare l'handle?
Codice sorgente - presumibilmente Plain Text |
|
|

()
Newbie
    
Messaggi:
Iscritto:
|
Postato originariamente da Snogar:
Scusa ma non fai pima a fare cosė per recuperare l'handle?
Codice sorgente - presumibilmente Plain Text |
|
Quello č l'handle del form non di una qualsiasi finestra attiva sul sistema |
|