Newsgroup: it.comp.lang.visual-basic
Titolo: ? Shell

Con RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)   apro un programma "....exe"
Con RetVal = ShellExecute(Me.hwnd, vbNullString, applicazione, vbNullString,
0,
apro un qualsiasi file con l'.exe associato.
Posso aprire un file da VB decidendo a quale eseguibile associarlo ?
Es:
Nel registro i file .txt sono associati a word ma io voglio aprirlo con
blocco note.
----------------------------------------------------------------------------
---------------------
? Esiste una funzione "anche API" che mi restituisca il contenuto di un
programma di testo.
Come GetWindowText però questa mi restituisce solo la caption della finestra
mentre a me serve titto il testo.
Ho l'impressione che con le chiamate SendMessage si possa fare ma come?
orf...@tin.it

 blocco note.
Prova cosě:
RetVal = Shell("C:/WINDOWS/NOTEPAD.EXE C:\TESTO.TXT", 1)
C I A O

 wrote in message
news:8e917v$8pk$4...@nslave1.tin.it...


 > RetVal = Shell("C:/WINDOWS/NOTEPAD.EXE C:\TESTO.TXT", 1)
ho provato adesso da prompt in ntws a dare solo "notepad" ed e' partito
subito blocco note.
sempre che ci sia sul pc, credo che sia uno dei programmi notificati,
dovrebbe trovarlo anche senza specificare il path.
in alternativa, usa shellexecute
(che pero' non ho provato in nt, ma dovrebbe andare):
'modulo
Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
'sub
Private Sub Command1_Click()
On Error GoTo errman
Dim iRet As Long
iRet = ShellExecute(Me.hwnd, vbNullString, _
"wlog.txt", vbNullString, CurDir, 1)
Exit Sub
errman: MsgBox Error
End Sub
ciao, a

Risposta alla seconda domanda
Il testo che č contenuto nelle altre finestre puņ essere letto con
GetWindowText, ma per ragioni di sicurezza (credo), non si puņ leggere
quello delle textbox (per esempio quello contenuto nelle finestre che
contengono la password ****), puoi leggere solo le textbox associate al tuo
thread....mi dispiace, ma anche io ci sono rimasto di....
Leggi l'MSDN alla voce GetWindowText sotto a Return Value e piangi
Una volta perņ ho visto un programma (compilato pultroppo) che faceva
proprio quello...non so come facesse
---------
Ciao
Sabba

 proprio quello...non so come facesse
con GetWindowText ok, però il tuo post mi ha incuriosito e ho fatto questa
funzioncina:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long
Private Const WM_GETTEXT = &HD
Public Function GetText(hWnd As Long) As String
    Dim m_Buffer As String * 10000
    If SendMessage(hWnd, WM_GETTEXT, Len(m_Buffer), ByVal m_Buffer) Then _
        GetText = TrimNull(m_Buffer)
End Function
Private Function TrimNull(ByVal StrIn As String) As String
   Dim nul As Long
   nul = InStr(StrIn, vbNullChar)
   Select Case nul
      Case Is > 1
         TrimNull = Left$(StrIn, nul - 1)
      Case 1
         TrimNull = ""
      Case 0
         TrimNull = Trim$(StrIn)
   End Select
End Function
cmq si può sapere anche il contenuto delle TextBox (degli altri programmi)
nascosto dagli asterischi (****)
Ciao
Faber

Mitico!!!!!!!!!
Non ci avevo proprio pensato....
Ecco a voi mostrati le grandi proprietą antifurto di windows...... 8-)
---------
Ciao
Sabba

 dovrebbe trovarlo anche senza specificare il path.
Window sembra furbo ma non lo č...in effitti guarda nel registro alla voce
"LOCAL MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\" oppure
nel Autoexec alla voce path....non so se funzia cosě anche su nt, ma penso
di sě...
--------
ciao
Sabba

 nascosto dagli asterischi (****)
^_^ č piů elegante usare SetWindowLong per ritrasformarla in una textbox
standard

 blocco note.


 Textline = ""
forse è una svista, ma secondo la tua dichiarazione è solo MyApp una
stringa, Textline è invece un Variant (non è come in C che scrivi int i, j,
k e sono tutti e tre interi...)
Ciao
Faber

Sorry.
Come diceva qualcuno....Errare è umano perseverare è diabolico.
Saluti Sandro
Roal Zanazzi ha scritto:
