找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: nonsmall

[公告]:vlisp直接使用WINDOWS API已经实现 提供思路+个提示

[复制链接]

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2008-12-31 16:04:58 | 显示全部楼层
(setq *wsh (vlax-create-object "MSScriptControl.ScriptControl"))
(vlax-put-property *wsh 'Language  "vbscript" )  
(setq vbcode   "sub showhello()
                                msgbox   \"hello\"
                                end  sub"  )
(vlax-invoke *wsh 'AddCode vbcode)
(vlax-invoke *wsh 'Run "showhello")

初步探索,采用vbs解释器
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-31 16:40:45 | 显示全部楼层
很好啊
楼上的思路请继续
谁能帮助VBS ???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2008-12-31 16:52:26 | 显示全部楼层
再提示一下  看来不对 :(
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-2 09:05:46 | 显示全部楼层
采用rundll32.exe命令
rundll32.exe user32.dll MessageBoxA hi
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2009-1-3 11:26:54 | 显示全部楼层
看到一篇文章,没看懂!

[iframe h=600 w=100%]http://blog.csdn.net/fupozsl/archive/2007/11/27/1904080.aspx[/iframe]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-3 13:16:42 | 显示全部楼层
这是通过地址调用api函数。
不过ccall等应该是装上脚本魔术师才会有
19楼的思路可发掘
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-4 12:10:35 | 显示全部楼层
大家多探讨

我有用到这句话

(setq WshShell (vlax-create-object "WScript.Shell"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2009-1-4 13:13:56 | 显示全部楼层
WScript 的 Run 和 采用rundll32.exe命令
rundll32.exe user32.dll MessageBoxA hi 结合?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-5 14:07:25 | 显示全部楼层
http://msdn.microsoft.com/en-us/library/bb687915.aspx


Calling DLL Functions and Commands from VBA
You can access DLL functions and commands in VBA by using the Declare statement. This statement has one syntax for commands and one for functions.

Syntax 1 – commands

Copy Code
[Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]Syntax 2 – functions

Copy Code
[Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-6 17:53:57 | 显示全部楼层
Lisp 本身还有一个可以导入类库的函数只是我不大会用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-12 21:11:19 | 显示全部楼层
大家顶起来啊,顶出老猫的绝学
老猫的绝活太多了,好歹露一点给我们撒
老猫现在还搞出了lisp直接调用VBA的对话框 不得了啊 都是划时代的变革啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-17 09:39:04 | 显示全部楼层
楼主是不是用了第三方的DLL文件?

http://hi.baidu.com/lengie/blog/ ... 55838ea1ec9c44.html


vbs 调用 Win32 API2007-03-20 14:26Option Explicit
Dim UserWrap
Set UserWrap = CreateObject("DynamicWrapper")

' Call MessageBoxA(), first register the API function
UserWrap.Register "USER32.DLL", "MessageBoxA", "I=HsSu", _
                  "f=s", "R=l"
' now call the function
UserWrap.MessageBoxA Null, "MessageBox (ANSI)", _
         "From DynaWrap Object", 3

Readme.txt

This is the dynacall.dll that I described as "bringing back the Declare
statement"   in VBScript. Basically it will allow you to call functions
in other dlls...like any of the win32 api functions. This will be my
only distribution.

Many thanks to Ton Plooy and Jeff Stong who wrote the code and published
it in WDJ. And more thanks to William Epp for getting it to work with my
sample script ccupd.vbs using the GETPROFILESTRING function. However I
have another function in the sample that still doesn't work
GETPROFILESECTION. This is a work in progress but I think it is a handy
little feature. Hopefully by this distributions it will get where it
needs to be. Clarence and Ian have offered to post it on their sites so
further updates can be had at either WSH site. (anyone else call this
thing woosh? Hopefully it will perform this way).

Basically you declare functions and other DLLS like this:

'    Create the wrapper object for dynamic DLL function calling
Dim UserWrap
Set UserWrap = CreateObject("DynamicWrapper")
'    GetProcAddress for GetPrivateProfileStringA()
UserWrap.Register "kernel32.DLL", "GetPrivateProfileString", "i=ssssls",
"f=s", "r=l"


The input parameters are:

i=describes the number and data type of the functions parameters

f=type of call _stdcall or _cdecl. So it can work with both MS C++ and
Borland C++. Default to _stdcall. If that doesn't work use _cdecl. If
that doesn't work good luck!

r=return data type.


Data types are:

const ARGTYPEINFO ArgInfo[] =
{
{'a', sizeof(IDispatch*),     VT_DISPATCH}, // a    IDispatch*
{'c', sizeof(unsigned char), VT_I4},        // c    signed char  
{'d', sizeof(double),         VT_R8},        // d    8 byte real
{'f', sizeof(float),          VT_R4},        // f    4 byte real
{'k', sizeof(IUnknown*),      VT_UNKNOWN},   // k    IUnknown*
{'h', sizeof(long),           VT_I4},        // h    HANDLE
{'l', sizeof(long),           VT_I4},        // l    long
{'p', sizeof(void*),          VT_PTR},       // p    pointer
{'s', sizeof(BSTR),           VT_LPSTR},     // s    string
{'t', sizeof(short),          VT_I2},        // t    short
{'u', sizeof(UINT),           VT_UINT},      // u    unsigned int
{'w', sizeof(BSTR),           VT_LPWSTR},    // w    wide string
}

William Epp added anr 'r' for VT_BYREF (pass by reference)but is for
strings only. This made the GETPROFILESTRING function to work. But it
didn't work for the GETPROFILESECTION. If anyone gets it to work please
let me know.


Attachments:

stong.zip - original download from WDJ
DynaWrap.zip - the modified code, the DLL with modifications.
feature.htm - the feature article for this code by Jeff Stong. Only
thing I could find on WDJ. I couldn't find Ton's article.

http://cwashington.netreach.net/site/downloads.html
http://www.mvps.org/scripting/
DYNACALL.DLL(下载):http://spywaredlls.prevx.com/RRIJIF25036849/DYNACALL.DLL.html
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-19 16:46:27 | 显示全部楼层
一楼公布了方法
祝大家新年快乐:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-1-19 18:51:55 | 显示全部楼层
(vl-vbarun macroname)  用这个的话,就是相当于用了VBA的语句了.
还以为不要写VBA的语句,纯VLISP的.
唉...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-20 13:14:23 | 显示全部楼层
最初由 wujimmy 发布
[B](vl-vbarun macroname)  用这个的话,就是相当于用了VBA的语句了.
还以为不要写VBA的语句,纯VLISP的.
唉... [/B]


只是全部代码都用Lisp搞定
你要靠人家 就得听人家的 人在屋檐下.....

你说的纯LISP
也许中国男足赢世界杯那天能实现吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 07:13 , Processed in 0.182893 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表