当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 开始用delphi的register类创建一个activex组件,在asp中调用,想实现操作注册表,结果死都不能成功! 于是改用vb写这个activex dll,在asp中调用,结果还是无法成功。 以上两中语言如果换成应用程序中则可以成功操作注册表,由此我想应该是web执行权限不够的原因。 请教高手解决办法!! ......
 ·给list控件发送消息的问题    »显示摘要«
    摘要: .... ntimes=5; for(i=0;i<ntimes;i++) { int index=senddlgitemmessage(hwnd,id_dlg_list,lb_addstring,0,(lparam)buf); //buf是要发送的内容 是个字符指针 senddlgitemmessage(hwnd,id_dlg_list,lb_setitemdata,(wparam)......


已经运行中的程序,如何再次接收到命令行参数COMMAND

如题..  
  不想让程序运行2次,但要它运行中又能接收命令行参数....

NO.1   作者: cuizm

在TIMER事件中通过SHELL函数调用命令,将命令内容输入到文本文件中,通过程序分析文件内容.  
   
  将命令内容放到文件中的方法,如DIR命令  
  C:\>dir   >aa.txt

NO.2   作者: jxgzay

将第二次运行的command()保存到数据库的记录中  
   
   
 

NO.3   作者: shawls

[名称]                       使用DDE技术为应用程序增辉  
   
  [语言种类]               Visual   Basic  
   
  [类别一]                   底层开发  
   
  [类别二]                   空  
   
  [类别三]                   空  
   
  [数据来源]               未知  
   
  [来源时间]               未知  
   
  [保存时间]               2002-01-11  
   
  [关键字一]               DDE  
   
  [关键字二]               动态数据交换  
   
  [关键字三]               API  
   
  [文件列表]               空  
   
  [内容简介]  
  使用DDE技术,为您的应用程序增辉     [关键字:   VB   &   VB.net     人气:198]      
  网友对本文的评论共有0篇   [查看/发表评论]           [专业IT技术论坛]      
   
  [心得体会]               空  
   
  [源代码内容]  
   
  上网的朋友一定都用过网络蚂蚁的吧?不知你在使用过程中有没有注意过,  
  那就是如果你想调动两个“蚂蚁”为您效力是不可能的——它总会把新运行的关闭。  
   
          而“蚂蚁”程序的妙处就在于:在重复运行“蚂蚁”时它不仅拒绝运行,而且能把已经运  
  行的“蚂蚁”激活,这样用上面的程序就无能为力了。但事实上实现拒绝运行并激活已运行的  
  程序有多种方法:  
   
          1、用FindWindow函数得到已经运行窗体的句柄,然后用SetActiveWindow等API函  
                数将其激活。其缺点也很明显,那就是没法传递参数。  
   
          2、用FindWindow函数得到已运行窗体的句柄后用SendMessage的方法给窗体传送一个自定义  
                消息,然后在窗体中拦截并进行处理,但这样做要修改窗体的标准消息处理  
                程序,用在VC,BC或DELPHI编写的程序中还行,但在VB中工作量太大,并且容易发生“一  
                般保护行错误”使VB崩溃,不太可取。  
   
          3、使用DDE技术。  
   
          所谓DDE技术,就是动态数据交换技术。也许你很奇怪,这与本文所讨论的内容有什么相干的?  
  且听我慢慢讲来。  
          为了实现拒绝运行并把已经运行的程序激活并实现各种功能,我们可以先用本文开头提到的方  
  法,检测一下程序有没有被运行过,如果没有,就正常运行,如果已经被运行过,就打通与它的  
  DDE通道,传给它一个数据,然后由已经运行的程序对数据进行处理,再去实现各种  
  “意想不到”的功能,这时也许就有人对这你的程序喊:“酷、酷……”     ^_^  
          好了,耳听为虚,眼见为实,下面让我们动点真格的。  
   
          打开VB,新建一个工程,选择菜单中的“工程->工程1   属性”,把工程名称改为“P1”,把已有的一个窗体的“Linkic”属性改为“FormDDE”,把“LinkMode”  
  属性改为“1   -   Source”,添加一个PictureBox控件作为DDE执行控件,命名为picDDE。然后添加一个  
  TextBox控件,命名为“txtInfo”,并把“MultiLine”属性设置为“True”,以便显示多行文本,作为  
  消息显示控件。  
   
  最后在窗体代码区输入以下代码:  
   
   
  Const   COMMANDLINE   =   "CommandLine="               注释:     还是为了省事,定义一个常量  
   
  Private   Sub   Form_LinkExecute(CmdStr   As   String,   Cancel   As   Integer)  
  Static   lngCount   As   Long  
  Dim   Info   As   String  
   
  Info   =   txtInfo.Text           注释:             保留原有信息  
   
  Select   Case   CmdStr                   注释:         CmdStr   是DDE程序传送过来的参数  
      Case   "Max"  
          Me.WindowState   =   2  
          Info   =   Info   +   vbNewLine   +   "窗体已被最大化"  
      Case   "ShowTime"  
          Info   =   Info   +   vbNewLine   +   "最后一次运行这个程序的时间是:"   +   Str(Now)  
      Case   "Count"  
          lngCount   =   lngCount   +   1  
          Info   =   Info   +   vbNewLine   +   "你已经第"   +   Str(lngCount)   +   "次重复调用这个程序。"   _  
                          +   vbNewLine   +   "但怕您不多给工资,所以只运行了一个   ^_^"  
  End   Select  
   
  If   Left(CmdStr,   Len(COMMANDLINE))   =   COMMANDLINE   Then  
      Info   =   Info   +   vbNewLine   +   "新程序曾以命令行形式运行"   +   vbNewLine   +   "命令行为:"   _  
                    +   vbNewLine   +   Right(CmdStr,   Len(CmdStr)   -   Len(COMMANDLINE))  
  End   If  
   
  txtInfo.Text   =   Info           注释:         把信息显示出来  
   
  Cancel   =   False            
  End   Sub  
   
   
  Private   Sub   LinkAndSendMessage(ByVal   Msg   As   String)  
  Dim   t   As   Long  
  picDDE.LinkMode   =   0                               注释:--  
  picDDE.Linkic   =   "P1|FormDDE"       注释:     |______连接DDE程序并发送数据/参数  
  picDDE.LinkMode   =   2                               注释:     |             “|”为管道符,是“退格键”旁边的竖线,  
  picDDE.LinkExecute   Msg                         注释:--                 不是字母或数字!  
   
  t   =   picDDE.LinkTimeout           注释:--  
  picDDE.LinkTimeout   =   1           注释:     |______终止DDE通道。当然,也可以用别的方法  
  picDDE.LinkMode   =   0                 注释:     |             这里用的是超时强制终止的方法  
  picDDE.LinkTimeout   =   t           注释:--  
  End   Sub  
   
   
  Private   Sub   Form_Load()  
  If   App.PrevInstance   Then           注释:   程序是否已经运行  
   
      Me.Linkic   =   ""                     注释:   这两行用于清除新运行的程序的DDE服务器属性,  
      Me.LinkMode   =   0                         注释:   否则在连接DDE程序时会出乱子的  
   
      LinkAndSendMessage   "Max"                     注释:--  
      LinkAndSendMessage   "Count"                 注释:     |-----连接DDE接受程序并传送数据/参数  
      LinkAndSendMessage   "ShowTime"           注释:--  
   
      If   Command   <>   ""   Then                           注释:   如果有命令行参数,就传递过去  
            LinkAndSendMessage   COMMANDLINE   +   Command          
      End   If  
      End                                                               注释:     结束新程序的运行  
  End   If  
  End   Sub    
   
   
  测试一下:  
          把工程“P1”编译成EXE文件  
          1、打开“我的电脑”,找到   P1.EXE   并执行。可以看到程序正常运行了。  
          2、再运行一次,这次新程序没有运行成功,而原来运行的程序却被最大化了,而且文本框中有以下  
                字符:  
   
  窗体已被最大化  
  你已经第   1次重复调用这个程序。  
  但怕您不多给工资,所以只运行了一个   ^_^  
  最后一次运行这个程序的时间是:00-2-6   7:11:01  
   
          3、打开   MS-DOS方式   ,用命令行方式再次运行程序,如   “P1   How   Are   You?”  
                这时原来运行的程序文本框中又多了几行字:  
   
  窗体已被最大化  
  你已经第   2次重复调用这个程序。  
  但怕您不多给工资,所以只运行了一个   ^_^  
  最后一次运行这个程序的时间是:00-2-6   7:14:32  
  新程序曾以命令行形式运行  
  命令行为:  
  How   Are   You?  
   
  OK,运行完全正确,然后你就可以把它应用的你的程序中了。  
   
  当然,这只是一些个人心得,如有疏漏之出,还请各位大虾指正。  
   
   
            以上代码保存于:   SourceCode   Explorer(源代码数据库)  
                        复制时间:   2005-09-12   13:03:45  
                        软件版本:   1.0.880  
                        软件作者:   Shawls  
                            E-Mail:   ShawFile@163.com  
                                    QQ:   9181729


    摘要: 要求:在指定路径(例如:d:\123 )文件夹下面,删除所有0字节的文本文件(.txt),其中该文件夹里面有若干.txt文件。 注:最好用批处理写,如果不行其他语言也可以,重要能实现功能就行了 目的:运行程序,该文件夹里面所以0字节文本全部删除,有内容的文本文件不能删除!!! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE