Appena finito ci spostiamo nel codice ed inseriamo
quanto segue:
'--------- INIZIO CODICE VISUAL BASIC ---------
Private status_mirc As String
Private Sub Form_Load()
status_mirc = "Inattivo"
'Setto la proprietà Locked dei diversi controlli
su FALSE in modo da non consentirne la modifica
txtCMD.Visible = False
txtServer.Locked = True
txtPorta.Locked = True
txtPath.Locked = True
Timer.Enabled = False
'Richiamo la Sub Disable
Disable
End Sub
Private Sub cmdAvvia_Click()
If (cmdAvvia.Caption = "Avvia") Then
cmdAvvia.Caption = "Ferma"
txtServer.Enabled = True
txtPorta.Enabled = True
txtPath.Enabled = True
lblServer.Enabled = True
lblPorta.Enabled = True
lblPath.Enabled = True
txtMIRC.Enabled = False
'impostiamo l'intervallo del timer a 10 secondi.
Timer.Interval = 10000
Timer.Enabled = True
ctrl_dde
ElseIf (cmdAvvia.Caption = "Ferma") Then
Disable
Timer.Enabled = False
End If
End Sub
Private Sub ctrl_dde()
On Error GoTo errori
'In questa prima parte diciamo al mirc di eseguire l'alias
ctrl_dde
txtCMD.LinkTopic = txtMIRC & "|command"
txtCMD.LinkItem = "/ctrl_dde"
txtCMD.LinkMode = 2
txtCMD.LinkPoke
'L'alias invocato precedentemente salva nel mirc due variabili:
%servers_dde e %porte_dde
'Queste due variabili vengono trascritte rispettivamente
negli oggetti txtServer e txtPorta
txtServer.LinkTopic = txtMIRC & "|evaluate"
txtServer.LinkItem = "%servers_dde"
txtServer.LinkMode = 2
txtServer.LinkRequest
txtPorta.LinkTopic = txtMIRC & "|evaluate"
txtPorta.LinkItem = "%porte_dde"
txtPorta.LinkMode = 2
txtPorta.LinkRequest
'Riportiamo nell'oggetto txtPath il percorso dell'eseguibile
del mIRC
'che ricaviamo valutando l'identificatore $mircexe
txtPath.LinkTopic = txtMIRC & "|evaluate"
txtPath.LinkItem = "$mircexe"
txtPath.LinkMode = 2
txtPath.LinkRequest
status_mirc = "Attivo"
Exit Sub
errori:
'Valutiamo il numero di errore.
Select Case Err.Number
'Se il numero di errore e' 282 significa che il collegamento
DDE non e' attivo
'Questo puo' significare due cose: o che il nome DDE non
esiste, o che il programma avente quel nome
'non è più in esecuzione
Case 282
If (status_mirc = "Inattivo") Then
MsgBox "Server DDE non trovato! Specificare un nome
valido"
cmdAvvia_Click
'Se il mIRC era stato visto come Attivo, ma ora non lo è
più, viene rieseguito
ElseIf (status_mirc = "Attivo") Then Shell (txtPath.Text)
Else: Exit Sub
End If
End Select
End Sub
Private Sub Timer_Timer()
ctrl_dde
End Sub
Private Sub txtMIRC_Change()
'Se non e' presente nessuna stringa di testo all'interno
del controllo txtMIRC disabilito il controllo cmdAvvia
If (Len(txtMIRC.Text)) Then cmdAvvia.Enabled = True Else
cmdAvvia.Enabled = False
End Sub
Private Sub Disable()
cmdAvvia.Caption = "Avvia"
txtServer.Enabled = False
txtPorta.Enabled = False
txtPath.Enabled = False
lblServer.Enabled = False
lblPorta.Enabled = False
lblPath.Enabled = False
txtMIRC.Enabled = True
status_mirc = "Inattivo"
End Sub
'--------- FINE CODICE VISUAL BASIC ---------
A questo punto possiamo compilare il lavoro appena creato
e spostarci sul mIRC editor. Andiamo nella sezione alias
ed incolliamo questo codice:
;--------- INIZIO CODICE mIRC ---------
ctrl_dde {
if ($server) {
unset %servers_dde %porte_dde
var %c = $scon(0), %i = 1
while (%i <= %c) {
%servers_dde = $instok(%servers_dde, $scon(%i).server, $calc($numtok(%servers_dde,44)
+ 1), 44)
%porte_dde = $instok(%porte_dde, $scon(%i).port, $calc($numtok(%porte_dde,44)
+ 1), 44)
inc %i
}
}
}
;--------- FINE CODICE mIRC ---------
Come potete notare questo alias crea semplicemente due variabili
nelle quali salva i server dove attualmente e' connesso
e le porte di questi.
La programmazione del nostro lavoro è giunta al
termine; ora è il momento di testarlo
Apriamo
il mIRC e successivamente il nostro programma, scriviamo
in quest' ultimo il nome DDE usato dal mIRC (di default
è mirc, in ogni caso potete scoprirlo tramite l'identificatore
$ddename) ed infine spingiamo sul pulsante Avvia.
Se non sono stati commessi errori i campi di testo server,
porte e percorso verranno riempiti dalle informazioni prelevate
dal mIRC. Adesso provate a chiudere il mIRC (il programma
deve restare aperto) e noterete che dopo alcuni secondi
il mIRC verrà rieseguito in automatico :).
Con questo è tutto
Guerrjero
www.tuttoirc.it
|