比如:NOTEPAD.exe已经打开,然后我点击一个TXT文件,如何让这个程序打开TXT文件,而不是重新开一个notepad.exe。

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    H:Hwnd;
    begin
      H:=findwindow(nil,'未定标题 - 记事本');
      if H<>0 then
        showmessage('ok');
      showwindow(H,sw_shownormal);
    end;
      

  2.   

    我想notepad.exe是系统调用的,你没法改吧。
    要么自己编个textedit,然后txt文件关联到他。
      

  3.   

    超级郁闷
    我说NOTEPad只是打了个比方啊我再把问题说一次:我编了个程序叫 AAAEDIT 用来打开txt文件用的,并已经关联了TXT文件,也就是说
    双击TXT文件就能启动AAAEDIT并打开这个TXT文件,然后我在双击了一个TXT文件,我现在
    想用已经启动好的AAAEDIT打开他,而并不是重新启动一个AAAEDIT。也就是说AAAEDIT只能
    运行一次。怎么防止多次运行我已经知道了,我现在的问题是不管双击哪个TXT文件,都是启动一个AAAEDIT
    并能将其打开。
      

  4.   

    你们有没有用过UltraEdit,他打开任意一个文件都只是在同一个程序里
      

  5.   

    1很简单啊,你只要在程序里加一个命令行参数处理即可了
    2如果担心程序运行两次。你只需要找到你处理txt的控件的handle 将他的文件改为新的文件
     或者干脆将原来的关掉将新的打开不久行了
      

  6.   

    自定义消息.或者 hook
    自定义消息.那么你点击要打开的文件时.系统会打开关连的程序.
    在程序打开时判断是否是唯一的.
    如果不是就发送自定义消息.通知最先打开的程序加载文件.
      

  7.   

    楼上的几位:
    被呼叫程序是自己的么?不是的话(比如notepad,对notepad,将老实例关掉再开新的是非常鲁莽的行为)怎么着都白搭,除非该程序本身就涉及为只打开单一实例的;
    自己写的程序就好办事了;
      

  8.   

    本菜鸟觉得应该还是要判断是否已经被NOTEPAD打开,被打开就挂掉它
    然后再用你的东东打开,当然TXT的内容,你直接COPY到你的程序里就好楼上说
    //============================================================
    // 你们有没有用过UltraEdit,他打开任意一个文件都只是在同一个程序里
    //============================================================你用你自己的程序开,你想怎么干就怎么干啊~郁闷---------------------------------------------
    //===========================================
    // 快使用 DELPHI 7 ,哼哼哈兮~~
    //===========================================
      

  9.   

    程序必须支持dde调用,关联的文件要写dde的调用方法!~