Newsgroup: it.comp.lang.visual-basic
Titolo: API

C'è qualcuno che può indicarmi un sito nel quale trovare informazioni sulle
API di Windows?
La mia e-mail è 
ffal...@penteres.it

La mia e-mail è 
ffal...@penteres.it
Ce ne sono diversi: li puoi trovare partendo dai links sul mio sito.
Ciao
---
--
-
MIX (VB5SP3)
170 links a siti VB
http://www.tempolibero.com/user/mix/
http://space.tin.it/computer/gaais/
-
--
---

Non so nemeno se la domanda che sto per fare ha un senso, ma sto leggendo un
manuale e finora non ho capito una cosa delle API. Fatte le dichiarazioni,
quando si usano nel progetto vanno messe in queste modo Es.
getwindowstexta(qualcosa). Qualcosa va fra parentesi. Non ho capito cosa
bisogna metterci e con quale criterio, per il momento sto leggendo sensa
senso :) Cosa ci va fra queste parentesi? Io ci vedo variabili, ma non so
quali! Bo....me lo spiegate in poche righe?? Grazie mille a chi mi darà una
mano, ciao.
Azathoth


Allora, caro sigore del caos ^_^ ... vedo che l'esempio del server/client
che ti avevo postato non l'hai nemmeno guardato.. perché li ci sono esempi
di api. vabe non mi offendo ^_^
Prendiamo ad esempio l'api che hai citata: GetWindowText.
La dichiarazione va fatta in questo modo:
 Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal
hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
GetWindowTextA è un alias, tu devi usare la dichiarazione GetWindowText. I
valori da passare alla funzione sono:
hwnd che è un long e rappresenta l'headler della finestra.. ovvero un indice
identificativo per distinguerla dalle altre. lpString è una stringa in cui
la funzione va a mettere la caption della finestra, mentre cch è la
grandezza del buffer dove va messa la caption (cioè la dimensione di
lpString). la funzione restituisce un long, che altro non è che la lunghezza
in caratteri del testo.
Se vuoi ottenere il testo di una finestra che fa parte del tuo progetto,
l'hWnd della finestra si trova nella sua proprietà hWnd. Supponiamo che hai
una form chiamata frmProva. L'hwnd di questa form è frmProva.hWnd. Se la
funzione API viene chiamata dalla form stessa puoi usare anche Me.hWnd.
Esempio. Supponiamo che tu hai una form con un bottone. Quando clicchi sul
bottone vuoi che l'hWnd della form appaia su una label.
Dichiari la funzione API GetWindowText all'inteno di un modulo bas (oppure
alla sezionegeneral della form stessa, ma in questo modo dovrai far
precedere la dichiarazione dalla parola Private)
Nell'evento cmbButton_Click metti le seguenti istruzioni:
Dim Testo As String
Dim lunghezza As Long
testo =Space(256)
Siccome le variabili stringa in VB sono viste diversamente che dal C, devi
crearti un buffer di dimensiono note e riempirlo con degli zeri o degli
spazi.
Poi lanci la funzione API
lunghezza= GetWindowText(Me.hWnd, testo, Len(testo))
 Supponiamo che la caption sia "Form di prova". La variabile testo è
composta da 256 caratteri, di cui i primi 13 sono la caption della form
mentre i rimanenti sono caratteri vbSpace. ma la funzione restituisce la
lunghezza del testo, che puoi usare per estrarre la caption. Sempre
all'interno dell'evento click del pulsante metti:
testo = Left(testo, lunghezza)
poi:
Text1.Text = testo
Questo è tutto...
Se invece la form è esterna al progetto, devi per prima cosa leggere l'hWnd
dell'applicazione. Se l'applicazione ha il focus puoi usare la funzione
GetForegroundWindow che restituisce l'hWnd dell'applicazione che ha il
focus. Altrimenti c'è la funzione FindWindow, alla quale vanno passati due
parametri: il primo è una stringa che rappresenta la classe
dell'applicazione, il secondo è il titolo esatto dell'applicazione. Tu
dirai, ma se è proprio il titolo che mi serve? Beh.. come disse Master,
basta usare un metodo ricorsivo che cerchi su n hWnd quello che ti serve:
For conta = 0 To 5000
       DoEvents
        GetWindowText conta, nome, Len(nome)
        If InStr(1, nome, title) >= 1 Then
            Exit Sub
        End If
    Next conta
Spero di essere stata chiara ^_^
Ciao

Long
Esatto, il problema più grosso è che non decidi tu quali sono i parametri
(le variabili dentro le parentesi) come fai con le tue funzioni, ma devi
mettere i parametri decisi da chi ha sviluppato queste funzioni. Per sapere
quali sono devi procurarti la documentazione necessaria (Vedi MSDN in altre
news), che ti da l'elenco delle API con i parametri necessari, dopodichè ti
verrà il mal di testa per capire a cosa servono e quale usare in base alle
necessità :-)
Ciao
Max