Newsgroup: it.comp.lang.visual-basic
Titolo: (?) FINDWINDOW

Come si usa questa API?
So che č gia stato chiesto, ma non ho ancora capito come fare per ricercare
i vecchi messaggi!!
devo cercare un programma fatto da me, e controllare che non sia gia aperto,
il form principale č: frmMain
il programma parte dalla sub MAIN
sapete aiutarmi?(credo proprio di si)
GRAZIE DI TUTTO
--
Now I Greet You
...GooD LooK...
ŚŹ)
EffEPi SySteM
EffEPi...@iol.it
Fabrizio Parrella
 - VB6 - SP2
UIN:21371755
------
Grazie a tutti per l'aiuto Passato e Futuro!!
------
togliere FP. dall'indirizzo E-Mail


???? Se vuoi fare in modo che il tuo programma possa essere aperto solo una
volta, basta mettere queste righe all'inizio della Sub main()
If App.PrevInstance Then
    End
End If
Però adesso ti complico un po' la vita. Con il codice seguente, se
l'applicazione è già in esecuzione, invece di caricare una seconda istanza,
ti porta il focus sull'istanza caricata precedentemente e se la window era
minimizzata te la ingrandisce ^_^
Public Sub Main()
    If App.PrevInstance Then
        EnumWindows AddressOf finestreAttive, 0
        End
    End If
    Load frmMain
End Sub
Public Function finestreAttive(ByVal hWnd As Long, ByVal lParam As Long) As
Long
    Dim buffer As String * 256
    Dim classe As String
    Dim nome As String
    Dim lunghezza As Integer
    lunghezza = GetClassName(hWnd, buffer, Len(buffer))
    classe = Left(buffer, lunghezza)
    If classe = "ThunderRT6MDIForm" Then
        lunghezza = GetWindowText(hWnd, buffer, Len(buffer))
        nome = Left(buffer, lunghezza)
        If InStr(nome, capApp) Then
            ShowWindow hWnd, SW_RESTORE
            SetForegroundWindow hWnd
            Exit Function
        End If
    End If
    finestreAttive = True
End Function
Se proprio vuoi usare la funzione FindWindow, sappi che questa vuole due
parametri (che ingorda ^^;;): il primo è la classe di appartenenza
dell'applicazione, nel tuo caso ThunderRT6MDIForm (se usi VB6) e il secondo
e la caption della tua applicazione. Il valore di ritorno è l'handle della
finestra.
Bye


Ti riporto sotto l'help delle API win32 per FindWindow.
Ti serve:
la caption della form (lpWindowName) e/o il nome della classe di finestra
della tua form principale (la trovi usando Spy++ che c'e' sul CD di VB).
--
Roal Zanazzi
z...@iol.it
The FindWindow function retrieves the handle to the top-level window whose
class name and window name match the specified strings. This function does
not search child windows.
HWND FindWindow(
    LPCTSTR lpClassName, // pointer to class name
    LPCTSTR lpWindowName  // pointer to window name
   );
Parameters
lpClassName
Points to a null-terminated string that specifies the class name or is an
atom that identifies the class-name string. If this parameter is an atom, it
must be a global atom created by a previous call to the GlobalAddAtom
function. The atom, a 16-bit value, must be placed in the low-order word of
lpClassName; the high-order word must be zero.
lpWindowName
Points to a null-terminated string that specifies the window name (the
window's title). If this parameter is NULL, all window names match.
Return Values
If the function succeeds, the return value is the handle to the window that
has the specified class name and window name.
If the function fails, the return value is NULL. To get extended error
information, call GetLastError.

 >


EnumWindows e AddressOf IN VISUAL BASIC?
Che c'è di strano? AddressOf è una parola chiave (operatore) di VB dalla
versione 5 in poi. Fu introdotta proprio per permettere l'uso da Vb di
funzioni come EnumWindows e come il subclassing, che chiedono l'indirizzo di
una funzione (che deve risiedere necessariamente in un modulo BAS).
Saluti,
Domenico

...


 wrote in message
7ha1gd$raf$1...@nslave1.tin.it...


COME FAI A CONSIGLIARE DI USARE AD UNA PERSONA CHE CHIEDE COME FUNZIONA
App:
tu ti riferissi a me....!!!
beh! sappi che so come si usa l'oggetto APP, il mio unico problema con la
programmazione è il non sapere l'inglese, quindi l'help sulle API (che come
saprai è sritto in INGLESE) per me risulta di difficile comprensione!!..
se conosci un'help sulle API in italiano sappimi dire dove lo posso trovare,
e non porrò più domande di questo genere!!!

lPluto as Long ) As Long
Questo č vero. Perň l'API viewer č installato con VB e tutti ce l'hanno.
Basta guardare lě. In genere io quando rispondo cerco di dare risposte
complete con dichiarazioni e quando č possibile anche con esempi
funzionanti, ma in questo caso non mi pareva necessario. Ripeto: basta
aprire l'API viewer per avere la dichiarazione.
Saluti,
Domenico

se conosci un'help sulle API in italiano sappimi dire dove lo posso
trovare,
Compra il libro di Dan Appleman sulle API, vale la spesa.
Saluti,
Domenico

minimizzata te la ingrandisce ^_^
  A parte il discorso della window minimizzata, che differenza c'e'
tra il tuo codice ed il seguente?
    If App.PrevInstance Then
       SaveTitle$ = App.Title
       App.Title = "Seconda istanza"
       Me.Caption = "Seconda istanza"
       AppActivate SaveTitle$
       SendKeys "% R", True
       End
    End If
  Ciao :-)
  Massimo
  Nell'indirizzo, inserire una "h" tra la "t" e la "u"
  In the address, insert an "h" between the "t" and the "u"


E allora?


Posta le domande che vuoi... finché sono io a dover rispondere non farti
problemi.


Ehm.... capApp č una costante che contiene il titolo dell'applicazione:
Public Const capApp As String = App.Title
Bye


Come ti permetti di giudicare le mie risposte? Non ti stai prendendo un po'
troppa confidenza? (Siamo pari adesso ^_^)
Cmq non posso spiegare tutto, ci vuole anche un po' di impegno.
Bye