|  
 VB Help With /Commands - Printable Version
 
 -Shoutbox (https://shoutbox.menthix.net)
 +-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
 +--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
 +---- Forum: Scripting (/forumdisplay.php?fid=39)
 +----- Forum: Plug-Ins (/forumdisplay.php?fid=28)
 +------ Thread: VB Help With /Commands (/showthread.php?tid=17723)
 VB Help With /Commands by f3nd3r on 11-05-2003 at 06:22 PM
 
Hey,
 How can I make something happen on a particular Command Argument?  Have a look at my code below. It may help you see what i'm trying to do. It doesnt work though.
 
 Any help is much appreciated
 
 
 
 
 code:Public Function ParseCommand(ByVal sCommand As String, ByVal sCommandArg As String, ByVal oConversationWnd As Object, ByRef sResult As String) As Boolean
 If (StrComp(LCase(sCommand), "/xtest", vbTextCompare) = 0) & sCommandArg = "%test" Then
 
 MsgBox "Test"
 
 ParseCommand = True
 Exit Function
 End Function
 
 
 RE: VB Help With /Commands by Jutx on 11-05-2003 at 06:33 PM
 
I would use a nested if statement the code below would display a message box if the user types /xtest hello
 
 
 code:Public Function ParseCommand(ByVal sCommand As String, ByVal sCommandArg As String, ByVal oConversationWnd As Object, ByRef sResult As String) As Boolean
 If (StrComp(LCase(sCommand), "/xtest", vbTextCompare) = 0) Then
 
 If sCommandArg = "hello" then
 
 MsgBox "This Msgbox will be activated if user sends /xtest hello"
 
 End if
 
 ParseCommand = True
 Exit Function
 End Function
 
 RE: VB Help With /Commands by f3nd3r on 11-05-2003 at 07:31 PM
 
Thats sweet dude. Thanks very much. That method didnt occur to me, yet its so obvious now I think about it.
 Ok now my next problem is how do i get the sResult to display written text aswell as something a command has triggered...Look at the source below.
 
 
 code:Public Function ParseCommand(ByVal sCommand As String, ByVal sCommandArg As String, ByVal oConversationWnd As Object, ByRef sResult As String) As Boolean
 If (StrComp(LCase(sCommand), "/xtest", vbTextCompare) = 0) Then
 
 If sCommandArg = "%hello" then
 
 sResult = "Hello"
 
 End if
 End if
 
 ParseCommand = True
 Exit Function
 End Function
 
 
 if someone types /xtest this is me saying %hello
 
 How do i get sResult to display "this is me saying hello" ?
 RE: VB Help With /Commands by Jutx on 11-05-2003 at 11:21 PM
 
I think i get what you mean you want sResult to display what the command argument said but with text added to it. Correct me if i am wrong.
 
 code:Public Function ParseCommand(ByVal sCommand As String, ByVal sCommandArg As String, ByVal oConversationWnd As Object, ByRef sResult As String) As Boolean
 If (StrComp(LCase(sCommand), "/xtest", vbTextCompare) = 0) Then
 
 If sCommandArg = "%hello" then
 
 sResult = "You just said to this plug-in: " & Replace(sCommandArg,"%","")
 
 
 End if
 End if
 
 ParseCommand = True
 Exit Function
 End Function
 
 The Replace bit just gets rid of the percent. If you want it there you could just say:
 
 sResult = "You just said to this plug-in: " & sCommandArg
 RE: VB Help With /Commands by f3nd3r on 11-05-2003 at 11:40 PM
 
This is almost what im looking for, but not quite. I think %hello is a bad example. I will eventually be making it to show something like CPU speed...so i want to be able to make something like this/xtest this is my CPU speed %cpu     but i want it so the user can type anything...for example /xtest hey, my spu speed is %cpu    or /xtest %cpu  ...thats my CPU speed.    So want i want is the %cpu to be able to be replaced anywhere in the message but keeping what the user is saying. I hope this makes sense
 RE: VB Help With /Commands by Jutx on 11-06-2003 at 12:07 AM
 
Ah i think i understand what you mean so you would want to show CPU speed for example but in the format the user wants. Perhaps a tag is better than this instead of a command so instead of the user typing:
 /xtest My Computer zooms at %cpu
 
 The user would write:
 
 My Computer Zooms at (!CPU)
 
 
 (The code is pretty much the same except it is the ParseTag option that you want.) If you still would prefer it as a command then here is the code format you want.
 
 
 EDIT: The code has been updated a bit
 
 
 code:Public Function ParseCommand(ByVal sCommand As String, ByVal sCommandArg As String, ByVal oConversationWnd As Object, ByRef sResult As String) As Boolean
 If (StrComp(LCase(sCommand), "/xtest", vbTextCompare) = 0) Then
 
 If Instr(Lcase(sCommandArg), "%cpu") <> 0  then
 
 Dim CPUSpeed As Long
 
 
 ' Type Code to get CPUSpeed
 ' then return the number of megahertz the CPU speed is (here the code will always say 1000 coz i don't know how to get CPU Speed)
 
 CPUSpeed = 1000
 
 sResult = Replace(sCommandArg,"%cpu", CPUSpeed)
 
 
 End if
 End if
 
 ParseCommand = True
 Exit Function
 End Function
 
 
 RE: VB Help With /Commands by f3nd3r on 11-06-2003 at 12:44 PM
 
Ok, I chose to use the command code. Heres what I'm faced with now.  When i choose a variable such as:
 sResult = Replace(sCommandArg,"%cpu", CPUSpeed)
 
 it will work if the user does /xtest %cpu   but it wont work if anything else is in the text..such as:
 
 /xtest %cpu ...thats my CPU speed.
 
 However, if it is a string, and not a variable, it will work fine with other text.. for example see below.
 
 sResult = Replace(sCommandArg,"%cpu", "cpu speed")
 
 With that someone can type '/xtest look at my %cpu'  and it would result in MSN saying "look at my cpu speed"  instead of just returning nothing like the variable does.
 
 So now i am left confused as to why it doesnt allow extra text if it is a variable, but it does if it is a string.
 
 Any ideas?
 
 I really appreciate your help Jutx
 RE: VB Help With /Commands by Jutx on 11-06-2003 at 04:19 PM
 
Have you actually got code to get the CPU Speed? because the code i posted will not actually work "off the shelf"  for two reasons.
 1) I did not declare the variable CPUSpeed
 2) I did not put the actual code to get CPU Speed. (I don't know how)
 
 I'll edit the code in my previous post and declare the variable
 
 RE: VB Help With /Commands by f3nd3r on 11-06-2003 at 05:11 PM
 
Yea, i do have the CPU code because it works if i do just:/xtest %cpu
 
 but if i add anything else to it like:
 /xtest %cpu ...thats my cpu speed
 
 Then nothing happens
 RE: VB Help With /Commands by Jutx on 11-06-2003 at 05:20 PM
 
I really cannot understand why it won't work then, everything seems to be fine, unless it is capitalisation.
 If so just change:
 
 sResult = Replace(sCommandArg,"%cpu", CPUSpeed)
 
 into
 
 sResult = Replace(lcase(sCommandArg),"%cpu", CPUSpeed)
 RE: VB Help With /Commands by f3nd3r on 11-06-2003 at 05:38 PM
 
Thanks for the help once again.
 I tried what you suggested and now it doesnt display anything when i type just the basic command /xtest %cpu
 
 I dont understand why it only displays the variable on its own. Maybe i should start from scratch again.
 RE: VB Help With /Commands by Hah on 11-06-2003 at 06:47 PM
 
Are you getting any errors at all? Try whipping the command into a module and call it from an exe with an error handler, it could be a type mismatch error with the long and the string:
 try replacing:
 
 CPUSPEED
 
 with
 
 CStr(CPUSPEED) or Str(CPUSPEED) etc.
 
 might help,
 
 Tom
 
 |