CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

运行时如何接收文件打开命令!

楼主Jiker(涛声依旧)2001-03-22 21:30:00 在 Delphi / VCL组件开发及应用 提问

我编写了一个简单的多页文本编辑器,第一次可以用它打开一个文本文件,可是在运行时,如果双击一个文本文件,我在已经运行的程序中如何将它打开在另一个页面中呢?  
  问题点数:96、回复次数:18Top

1 楼Jiker(涛声依旧)回复于 2001-03-22 21:40:00 得分 0

我是一点儿也摸不着头脑。Top

2 楼sundayboys(sunboy)回复于 2001-03-22 21:59:00 得分 36

首先,将自己的程序与。txt文件相关联(通过注册表),然后试试这个代码(bcb的)在winmain()函数的开始处添加:  
  HWND   RuningHandle=FindWindowEx(NULL,NULL,"自己窗体名",NULL);  
  //如果已经有一个实例运行,则只向该实例发送一个消息  
  //告诉它该打开哪个文件,而不运行程序  
   
  if(RuningHandle!=NULL)  
  {  
    TClipboard   *Clipbd=new   TClipboard();  
    Clipbd->Clear();  
    Clipbd->SetTextBuf(CLine);  
    delete   Clipbd;  
    PostMessage(RuningHandle,OPEN_NEW_FILE,NULL,NULL);  
    return   0;  
  }  
  Top

3 楼coldljy(青山隐隐)回复于 2001-03-22 22:19:00 得分 0

用子窗口,看看MDI的例子。  
  或者是用pagecontrol。Top

4 楼Jiker(涛声依旧)回复于 2001-03-24 00:22:00 得分 0

to   sumdaybodys:  
        谢谢,这的确是个办法,但我还有点问题:  
      1.如果接收这个消息,我使用Delphi编程,要接管系统本身的消息吗,如何做?  
      2.我用EditPlus试了一下,发现每次打开一个新文件后,先前拷贝的剪贴板中的内容还在,它可能用的其它方法。Top

5 楼Jiker(涛声依旧)回复于 2001-03-24 00:22:00 得分 0

to   sumdaybodys:  
        谢谢,这的确是个办法,但我还有点问题:  
      1.如果接收这个消息,我使用Delphi编程,要接管系统本身的消息吗,如何做?  
      2.我用EditPlus试了一下,发现每次打开一个新文件后,先前拷贝的剪贴板中的内容还在,它可能用的其它方法。Top

6 楼sundayboys(sunboy)回复于 2001-03-24 01:32:00 得分 0

to   Jiker:  
  1.不需要  
  2.我再想想Top

7 楼Jiker(涛声依旧)回复于 2001-03-25 01:21:00 得分 0

to   sumdaybodys:  
      1.不需要,那么在Delphi中如何写(接收)。  
  Top

8 楼Jiker(涛声依旧)回复于 2001-03-26 00:25:00 得分 0

to   sumdaybodys:  
      1.不需要,那么在Delphi中如何写(接收)。  
     
   
    Top

9 楼Jiker(涛声依旧)回复于 2001-03-26 23:49:00 得分 0

不需要,那么在Delphi中如何写(接收)。  
  Top

10 楼sundayboys(sunboy)回复于 2001-03-27 18:33:00 得分 0

kao,那天酒真的喝多了,应该是要(bcb的)  
  BEGIN_MESSAGE_MAP  
  MESSAGE_HANDLER(OPEN_NEW_FILE,TMessage*,OpenNewFile)  
  END_MESSAGE_MAP(TForm)Top

11 楼Jiker(涛声依旧)回复于 2001-03-27 22:53:00 得分 0

to   sundayboys:  
  我就是说,VB都要,VB要用API来操作,Delphi如何做,应该与BCB不同?Top

12 楼Jiker(涛声依旧)回复于 2001-04-12 01:11:00 得分 0

to   sundayboys:  
  我就是说,VB都要,VB要用API来操作,Delphi如何做,应该与BCB不同?   Top

13 楼Jiker(涛声依旧)回复于 2001-04-12 01:11:00 得分 0

to   sundayboys:  
  我就是说,VB都要,VB要用API来操作,Delphi如何做,应该与BCB不同?   Top

14 楼Kingron(单身走我路……)回复于 2001-04-12 14:41:00 得分 0

等我测试再说。  
  附加功能:提前。Top

15 楼Jiker(涛声依旧)回复于 2001-04-12 23:56:00 得分 0

KingRon:  
  提前感谢你!Top

16 楼Kingron(单身走我路……)回复于 2001-04-13 08:55:00 得分 60

呵呵,测试代码如下(编译一下,然后同时运行两个实例,点击那个button,另外一个程序回显示一个字符串,当然,如果改成文件名也是一样的噢!):  
  我想你要修改一下就很简单了吧!  
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,  
      StdCtrls;  
   
  const  
      wm_Openfile=wm_user+100;  
   
  type  
      TForm1   =   class(TForm)  
          Button1:   TButton;  
          procedure   Button1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
          procedure   wmopenfile(var   msg:tmessage);message   wm_openfile;  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.DFM}  
   
  {   TForm1   }  
   
  procedure   TForm1.wmopenfile(var   msg:   tmessage);  
  var  
      p:pchar;  
  begin  
      p:=pchar(msg.WParam);  
      showmessage(p);  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      h:hwnd;  
  begin  
      caption:='abc';  
      h:=findwindow('tform1','form1');  
      if   h>0   then  
          sendmessage(h,wm_Openfile,integer(pchar('c:\windows\readme.txt')),0);  
      caption:='form1';  
  end;  
   
  end.  
  Top

17 楼Kingron(单身走我路……)回复于 2001-04-17 13:45:00 得分 0

解决了没有?Top

18 楼Jiker(涛声依旧)回复于 2001-04-21 01:59:00 得分 0

谢谢,我还没来得及试,我想应该过了。Top

相关问题

  • 运行未知pif文件后,不能打开命令行???
  • 怎样在命令提示符下运行C#文件?
  • 请问怎样在nt中运行包含oracle命令的批处理文件?
  • java命令运行.class文件为什么不能带扩展名?
  • 请问如何在命令行,直接用TC编译,运行文件?
  • 请问如何在命令行,直接用TC编译,运行.C文件.
  • 已经运行中的程序,如何再次接收到命令行参数COMMAND?
  • FTP客户发送"LIST \r\n"命令后如何得到接收数据中的文件名?
  • 在VB中运行一个外部的命令行文件,怎样获取他返回的信息?(例见文)
  • 如何在裢接中执行一段命令:如 运行一个本地的exe文件

关键词

  • 文件
  • delphi
  • bcb
  • 消息
  • vb
  • api
  • clipbd
  • sumdaybodys
  • 接收
  • 运行

得分解答快速导航

  • 帖主:Jiker
  • sundayboys
  • Kingron

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo