Not every function is working as it should, but some basic-functions are working. And I also didn't use COM..
Code: Select all
Global sCCNotify.s, sCCColor.s, sCCBold.s,sCCItalic.s,sCCUnderline.s
Global sCCStrikeout.s,sCCReset.s,sCCNoIcon.s
Global sCCMeStart.s,sCCMeEnd.s
sCCNotify="\x12"
sCCColor="\x03"
sCCBold="\x02"
sCCItalic="\x05"
sCCUnderline="\x1F"
sCCStrikeout="\x06"
sCCReset="\x0F"
sCCNoIcon="\x08"
sCCMeStart="«I"
sCCMeEnd="»"
Global sUserEmail.s,sCommand.s,sCommandArg.s,sTag.s,sNotifyCode.s,sText.s
Global sMessage.s,sTitle.s,sProgram.s
;restliche strukturen!
Structure MPL_TOAST_INFO
sTitle.s
sMessage.s
sProgram.s
sSoundFile.s
nReserved.l
EndStructure
Structure PLUGIN_PARAM
*iConversationWnd
sContactName.b[512]
EndStructure
Structure a128
a.b[128]
EndStructure
Structure a256
a.b[256]
EndStructure
Structure PLUGIN_PUBLISH_LIST
nCount.w
sName.a128[50]
sValue.a128[50]
sHelp.a256[50]
EndStructure
;########################## MAIL ####################
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=765&highlight=
; Author: stbi
; Date: 30. April 2003
Global res.s, cr.s, ConnID.l
cr.s=Chr(13)+Chr(10)
Procedure send(msg.s)
SendNetworkData(ConnID,@msg,Len(msg))
Debug "send: "+msg
EndProcedure
Procedure.s wait()
res=""
For tmp=1 To 4999
res+" "
Next
ReceiveNetworkData(ConnID,@res,4999)
Debug "received: "+res
res=Left(res,3)
ProcedureReturn res
EndProcedure
Procedure.l SENDMAIL(mailserver.s,mailto.s,mailfrom.s,subject.s,msgbody.s)
If InitNetwork()
ConnID = OpenNetworkConnection(mailserver,25)
If ConnID
wait()
error=0
If res="220"
send("HELO CGIapp"+cr)
wait()
If res="250"
Delay(100)
send("MAIL FROM: <"+mailfrom+">"+cr)
wait()
If res="250"
send("RCPT TO: <"+mailto+">"+cr)
wait()
If res="250"
send("DATA"+cr)
wait()
If res="354"
Delay(100)
send("Date: "+cr)
send("From: <"+mailfrom+">"+cr)
send("To: <"+mailto+">"+cr)
send("Subject: "+subject+cr)
send("X-Mailer: PBMailer"+cr)
Delay(100)
send("--"+cr+"--"+cr+cr)
send(msgbody)
Delay(100)
send(""+cr)
send("."+cr)
wait()
If res="250"
Delay(100)
send("QUIT"+cr)
wait()
ProcedureReturn 1
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
CloseNetworkConnection(ConnID)
EndIf
EndIf
EndProcedure
;########################## MAIL ####################
Procedure.s WriteTextAscii(Text.s,Hoehe.l,Schriftart.s,Zeichen.s)
TextFarbe=RGB(255,0,0)
LoadFont(0,Schriftart,Hoehe)
CreateImage(123,500,Hoehe+2)
StartDrawing(ImageOutput())
laenge=TextLength(Text)
StopDrawing()
ResizeImage(123,laenge,Hoehe+4)
StartDrawing(ImageOutput())
FrontColor(255,0,0)
Locate(0,-2)
DrawText(Text)
StopDrawing()
StartDrawing(ImageOutput())
For y=1 To Hoehe
For x=1 To laenge
farbe=Point(x,y)
If farbe=TextFarbe
String.s+Zeichen
Else
String+" "
EndIf
Next
String+Chr(10)
Next
StopDrawing()
ProcedureReturn String.s
EndProcedure
ProcedureDLL.b Initialize(nVersion.l,sUserEmail1.s,*iMessengerObj) ;wenn frisch angemeldet
sUserEmail=sUserEmail1
; MessageRequester("plugin läuft auf Version: "+Str(nVersion),"User: "+sUserEmail)
ProcedureReturn #True
EndProcedure
ProcedureDLL.b Uninitialize() ;wenn exit oder wenn neuer user
; MessageRequester("","uninitialize!")
;no procedurereturn
EndProcedure
Procedure AboutBox(dummy)
OpenWindow(0,300,300,200,100,#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_WindowCentered,"About")
CreateGadgetList(WindowID())
Text.s = "Mainprogrammer: Remi Meier" + cr
Text + "Helper: Kevin Müri" + cr
Text + "E-Mail: nephta@gmx.ch" + cr
Text + "Website: www.remimeier.ch.vu" + cr
Text + "If you have more ideas, please send" + cr
Text + "them to me!"
TextGadget(1,10,10,180,180,Text,#PB_Text_Center)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndProcedure
;################## Toast
ProcedureDLL DisplayToast(sMessage1.s,sTitle1.s,sProgram1.s,bPlaySound.l)
info.MPL_TOAST_INFO
info\sMessage = sMessage1
info\sTitle = sTitle1
info\sProgram = sProgram1
If bPlaySound = #False
info\sSoundFile = ""
EndIf
nMsg = RegisterWindowMessage_("MessengerPlus_DisplayToast")
SendMessage_(HWND_BROADCAST, nMsg, (wParam)&info, #False)
EndProcedure
;################## Toast
ProcedureDLL.b ParseCommand(sCommand1.s,sCommandArg1.s,*pParam.PLUGIN_PARAM,*sResult) ;wird aufgerufen bei befehlsabfrage: hauptteil
sCommand = sCommand1
sCommandArg = sCommandArg1
If sCommand = "/xtext"
Text.s = sCommandArg
Text = WriteTextAscii(Text,10,"Arial","a")
PokeS(*sResult,Text)
ProcedureReturn *sResult
ElseIf sCommand = "/xmail"
args.s = sCommandArg
mailserver.s = StringField(args,1," ")
subject.s = StringField(args,2," ")
nach.s = StringField(args,3," ")
from.s = StringField(args,4," ")
dumm.s = StringField(args,5," ")
z = 5
While dumm.s
Text.s + dumm + " "
z + 1
dumm = StringField(args,z," ")
Wend
If SENDMAIL(mailserver,nach,from,subject,Text)
MessageRequester("Finished","Sent!")
EndIf
PokeS(*sResult,"")
ProcedureReturn *sResult
ElseIf sCommand = "/xremi"
Text.s = sCommandArg
CreateThread(@AboutBox(),1)
PokeS(*sResult,"")
ProcedureReturn *sResult
ElseIf sCommand = "/xtoast"
Text.s = sCommandArg
DisplayToast(Text,"Toast","",#True)
PokeS(*sResult,"")
ProcedureReturn *sResult
EndIf
ProcedureReturn #False
EndProcedure
;parsecommandw()
ProcedureDLL.b ParseTag(sTag1.s,*pParam.PLUGIN_PARAM,*sResult);wird aufgerufen bei tagabfrage (z.b:(!WAT))
sTag=sTag1
If sTag="(!xIE)"
RunProgram("Iexplore.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xWP)"
RunProgram("wordpad.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xOUT)"
RunProgram("outlook.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xREG)"
RunProgram("Regedit.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xCMD)"
RunProgram("cmd.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xDX)"
RunProgram("dxdiag.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xMSC)"
RunProgram("msconfig.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xEXP)"
RunProgram("explorer.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xWRD)"
RunProgram("winword.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xECL)"
RunProgram("excel.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xNTP)"
RunProgram("notepad.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xMFX)"
RunProgram("firefox.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xWMP)"
RunProgram("wmplayer.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xRLP)"
RunProgram("realplay.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xINC)"
RunProgram("incmail.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xSNG)"
RunProgram("snagit32.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xPSP)"
RunProgram("photoshop.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xFPG)"
RunProgram("frontpg.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xDW)"
RunProgram("dreamweaver.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xMSP)"
RunProgram("winmine.exe")
PokeS(*sResult,"")
ProcedureReturn #True
ElseIf sTag="(!xforum)"
RunProgram("http://www.fcbforum.ch")
PokeS(*sResult,"")
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
;parsetagw()
ProcedureDLL.b ReceiveNotify(sNotifyCode1.s,sText1.s,*pParam.PLUGIN_PARAM,*sTextToSend)
sNotifyCode=sNotifyCode1
sText=sText1
ProcedureReturn #True
EndProcedure
;receivenotifyw()
ProcedureDLL PublishInfo(*sPluginName,*aCommands.PLUGIN_PUBLISH_LIST,*aTags.PLUGIN_PUBLISH_LIST)
PokeS(*sPluginName,"AppStarter")
*aCommands\nCount = 2
*aCommands + 2
PokeS(*aCommands\sName[0],"Sendmail")
PokeS(*aCommands\sValue[0],"xmail mailserver subject mailto mailfrom message")
PokeS(*aCommands\sHelp[0],"")
PokeS(*aCommands\sName[1],"About")
PokeS(*aCommands\sValue[1],"xremi")
PokeS(*aCommands\sHelp[1],"")
*aTags\nCount = 21
*aTags + 2
PokeS(*aTags\sName[0],"InternetExpl.")
PokeS(*aTags\sValue[0],"(!xIE)")
PokeS(*aTags\sName[1],"WordPad")
PokeS(*aTags\sValue[1],"(!xWP)")
PokeS(*aTags\sName[2],"Outlook")
PokeS(*aTags\sValue[2],"(!xOUT)")
PokeS(*aTags\sName[3],"RegEdit")
PokeS(*aTags\sValue[3],"(!xREG)")
PokeS(*aTags\sName[4],"Console (CMD)")
PokeS(*aTags\sValue[4],"(!xCMD)")
PokeS(*aTags\sName[5],"DxDiag")
PokeS(*aTags\sValue[5],"(!xDX)")
PokeS(*aTags\sName[6],"MSConfig")
PokeS(*aTags\sValue[6],"(!xMSC)")
PokeS(*aTags\sName[7],"Explorer")
PokeS(*aTags\sValue[7],"(!xEXP)")
PokeS(*aTags\sName[8],"Word")
PokeS(*aTags\sValue[8],"(!xWRD)")
PokeS(*aTags\sName[9],"Excel")
PokeS(*aTags\sValue[9],"(!xECL)")
PokeS(*aTags\sName[10],"Notepad")
PokeS(*aTags\sValue[10],"(!xNTP)")
PokeS(*aTags\sName[11],"Firefox")
PokeS(*aTags\sValue[11],"(!xMFX)")
PokeS(*aTags\sName[12],"MediaPlayer")
PokeS(*aTags\sValue[12],"(!xWMP)")
PokeS(*aTags\sName[13],"RealPlayer")
PokeS(*aTags\sValue[13],"(!xRLP)")
PokeS(*aTags\sName[14],"IncrediMail")
PokeS(*aTags\sValue[14],"(!xINC)")
PokeS(*aTags\sName[15],"SnagIt")
PokeS(*aTags\sValue[15],"(!xSNG)")
PokeS(*aTags\sName[16],"Photoshop")
PokeS(*aTags\sValue[16],"(!xPSP)")
PokeS(*aTags\sName[17],"PhotoImpact")
PokeS(*aTags\sValue[17],"(!xPIM)")
PokeS(*aTags\sName[18],"Frontpage")
PokeS(*aTags\sValue[18],"(!xFPG)")
PokeS(*aTags\sName[19],"Dreamweaver")
PokeS(*aTags\sValue[19],"(!xDW)")
PokeS(*aTags\sName[20],"Minesweeper")
PokeS(*aTags\sValue[20],"(!xMSP)")
ProcedureReturn #True
EndProcedure
; ExecutableFormat=Shared Dll
; Executable=C:\Dokumente und Einstellungen\Kevin\Desktop\appstarter.dll
; EOF