Snippets

Vendredi 30 décembre 2005

Bon, bref, je n'arrive pas à trancher:
Ai-je plus de chance de me casser la figure à cause de la glace ou de mes lacets ?
Comme je n'aime pas rester sur un probléme non résolu, Hop, quelques bouts de code:
Du Vbscript pour MSN, histoire de voir ce que l'on peut récupérer.

'MSN Messenger Conf Reader
'
'Registre
Set FbWshShell = WScript.CreateObject("WScript.Shell")
MSNRegKeyA = "HKCUSoftwareMicrosoftMSNMessengerUser.NET Messenger Service"
MSNA = FbWshShell.RegRead(MSNRegKeyA)
MSNRegKeyB = "HKCUSoftwareMicrosoftMSNMessengerServer"
MSNB = FbWshShell.RegRead(MSNRegKeyB)
MSNRegKeyC = "HKLMSoftwareMicrosoftMSNMessengerInstallationDirectory"
MSNC = FbWshShell.RegRead(MSNRegKeyC)
RESULTA="[User] :"&MSNA&vbCrLf&"[Serveur] :"&MSNB&vbCrLf&"[Installation] :"&MSNC&vbCrLf
'Fichiers
Set FbFso = Createobject("scripting.filesystemobject")
DIRA=FbFso.GetSpecialFolder(0)&"Application DataMicrosoftMSN Messenger"
set DIRB=FbFso.GetFolder(DIRA)
set DIRC=DIRB.SubFolders
For Each DIRD In DIRC
RESULTB=RESULTB&"[Repertoire ID]:"&vbCrLf&DIRD.path&vbCrLf
Next
RESULTC="(Dans ce rep:Emoticons, Backgrounds, Avatars...)"
WScript.Echo RESULTA&RESULTB&RESULTC


Bon, c'est un début.
Maintenant, je vais tester l'API Messenger. On verra...

 

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Dimanche 1 janvier 2006

Histoire de commencer l'année en douceur, un petit code vbs utilisant l'API MSN Messenger:

'MSN Messenger API Test
'
OfflineStatus=1
OnlineStatus=2
BusyStatus=10
AwayStatus=34
'
ONLINECTC=0
USERSTATUS="Deconnecte"
'
Set FbMso=CreateObject("Messenger.UIAutomation")
if FbMso.MyStatus=OnlineStatus then
   USERSTATUS="Connecte"
   end if
Set MSNCTC=FbMso.MyContacts
For CTCNUM=1 to MSNCTC.Count
    if MSNCTC.Item(CTCNUM-1).Status=OnlineStatus then
       ONLINECTC=ONLINECTC+1
    end if
    if MSNCTC.Item(CTCNUM-1).Status=AwayStatus then
       ONLINECTC=ONLINECTC+1
    end if
Next
WScript.Echo "Etat :"&USERSTATUS&VbCrLf&"Nombre de Contacts Présents sur MSN: "&ONLINECTC&" (sur "&CTCNUM-1&")"&VbCrLf

Voila, rien de sensationnel, le prog récupére notre état sur MSN et compte le nombre de contacts présents.

L'étape suivante consiste à pouvoir envoyer un message à un contact.

 

 

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Mercredi 15 février 2006

Juste quelques lignes pour envoyer un message à un de ses contacts, utilisation de SendKeys.

Set FbWshShell=CreateObject("WScript.Shell")

Set FbMso=CreateObject("Messenger.UIAutomation")
FbMso.InstantMessage("
username@hotmail.com")

FbWshShell.SendKeys "Hello From my MSNBot"
FbWshShell.SendKeys "{ENTER}"
FbWshShell.SendKeys "{ENTER}"

YOP

 

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Dimanche 23 avril 2006

Quelques lignes de VBS permettant d'envoyer par mail un fichier local.

J'avais bricolé ça vite fait pour un pote qui voulait s'en servir de notifieur: Le fichier contenait l'adresse Internet de sa bécane (la sortie d'un ipconfig).

Comme ça, il pouvait la joindre de n'importe ou.

Si ça peut rendre service à quelqu'un:

set xmail = WScript.CreateObject("Outlook.Application")

set xmassmail = xmail.CreateItem(0)

xmassmail.Recipients.Add("username@hotmail.fr")

xmassmail.Subject = "Fichier envoye par xmassmail"

xmassmail.Body = vbcrlf & "Et Hop..."

xmassmail.Attachments.Add("c:\yop.log")

xmassmail.Send

Set xmail = Nothing

 

 

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Samedi 13 mai 2006

Le langage Basic est parfait pour la bidouille, trop souvent critiqué par les puristes qui le trouvent "amateur", pas assez chiant sans doute.
Le style de lemming qui orne sa station Windows d'un zoli fond d'écran Linux...

Pour le OldSchool MSDOS/16bit: MoonRock ou Asic.
Pour un prog Gui vite fait sous Win32: RapidQ.
Un script système pas trop méchant: VBScript.
Un problème de calcul sur les grands nombres? uBAsic...
Dans d'autres cas(Win32,Linux): L'intérpréteur Yabasic.
Pour du délire pur: Blitz Basic.

On retrouve en Blitz la majorité des commandes classiques, avec une syntaxe souvent simplifiée au max.

No (Hard) Work, Just Fun and Red Bull.

D'abord, les types de variables:

HashKey%: Designe une variable entiére.
PValue#: Un Réél.
EmailAdress$: Une Chaine de caractéres.


Tableaux
On les dimensionne par Dim:
Dim HashKeys%(50)
Dim PValues#(15,15)

Affectation d'une valeur:
PValues#(1,4)=3.141592

Ensuite des exemples de commandes:

Condition (If-Then-Else)
Answer$=Input$("Exit the Game ([Yes] or No)")
If Answer$ = "No" Then
Print "OK, the Game continues !"
Else
Print "Have a Nice DOS"
End If


Choix Multiple (Case-Select)
DifficultyLevel=1

Select DifficultyLevel
Case 1
Print "Mode EASY selected..."
Case 2
Print "Mode MEDIUM is On."
Case 3
Print "Mode HARD is On, Good luck !"
Default
Print "What are you waiting for, Christmas?"
End Select

Boucle (For-Next)
For i = 1 To 100 Step 2
Print i
Next

Gestion Clavier (KeyHit)
While Not KeyHit(1)
Wend


Saut Direct (Goto :)
Print "We jump to label 0"
Goto label0
Print "Never Executed- Salami Coding"
.label0
Print "Ok, We are at label0"

Definition de Fonctions
Function Ideale(Lgth%)
Print "Result for your Length:"
Print Lgth%-100-(Lgth%-150)/4
End Function

Appel par:
t%=190
Ideale(t%)

Manipulation de Chaines
Answer$="John Lennon"
;Print John
FirstName$=Mid$(Answer$,1,4)
print FirstName$
;Prints Lennon
Name$=Mid$(Answer$,6,6)
Print Name$
NewAnswer1$=Replace$(Answer$,FirstName$,"Paul")
NewAnswer2$=Replace$(NewAnswer1$,Name$,"Mc Cartney")
;Prints the new patronym
Print NewAnswer2$

Fichiers
(Ordinosaures War?)

;Write to the File
FileHandle1 = WriteFile("OldComputers.dat")
WriteString( FileHandle1,"Commodore 64")
WriteString( FileHandle1,"Apple II")
WriteString( FileHandle1,"Sinclair Spectrum")
WriteString( FileHandle1,"Oric Atmos")
CloseFile( FileHandle1 )

;Read from the File
FileHandle2 = ReadFile("OldComputers.dat")
For i=1 To 4
Dummy$ = ReadString$(FileHandle2)
yop = Instr( Dummy$,"Sinclair",1)
;A Test on the manufacturer
If yop=0 Then
Print Dummy$ + " is OK"
Else
;Sorry for Z80 fans...
Print "Sinclair System: Not 6502 Based..."
End If
Next
CloseFile(FileHandle2)
WaitKey()

Bien sur, il aurait été plus élégant de lire les noms de machines dans des champs de DATA:

...
Restore computernames
For t = 1 To 4
Read Ordi$
WriteString( FileHandle1,Ordi$)
Next

.computernames
Data "Commodore 64","Apple II","Siclair Spectrum","Oric Atmos"

...

Une particularité (puissante) du Blitz par rapport
aux autres Basic: Les Classes/Structures.
On va pouvoir définir des type complexes, des collection de varaibles
de types différents ou non, un contact par exemple:

;Type Definition
Type Contact
Field Name$
Field Email$
Field Phone$
Field Age%
End Type
;New Instance (Weird Syntax...)
MSNctc.Contact = New Contact
;Affectation
MSNctc\Name$ = "username"
MSNctc\Email$ = "
username@hotmail.fr"
MSNctc\Phone$ = "0102030405"
MSNctc\Age% = 19
;Prints the Mail Adress
If (MSNctc\Age%>18) Then
Print "email: " + MSNctc\Email$
Else
Print "No 18+ ctc found..."
End If
WaitKey()


Voila, c'est tout pour les bases.
Il y a bien sur d'autres commandes, mais pour démarrer c'est suffisant.
Pour le reste des commandes "classiques", voir l'aide en ligne.
Hey, Nax, si tu en vois d'autres, direction MSN.

Dans la suite on va bricoler avec les images 2D et les Sons.
Le vrai Fun va commencer et toute la richesse de ce Basic va apparaite...

Le réseau et la 3D viendront ensuite.

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus