问题1:WIN2K中,大部文档用鼠标右击时打开的快捷菜单,均有“打印”功能,调用后直接对选择的文档执行打印操作。不同的文档提示也是不一样的。请问有什么API可以执行相同的功能,参数是一文档名称。最好能提供一些简单代码。
问题2:打印后如何能得到打印输出的结果,比如打印机设置为打印到文件,怎么取得打印后的文件名呢?

解决方案 »

  1.   

    打印Shell
    实际上就是在注册表对应文件类型下边建立Shell项,在Shell项下面建立print项,在command子项的默认值设置要执行的程序以及命令行,详细的可以打开注册表,参照HKEY_CLASSES_ROOT下边txtfile项的内容
      

  2.   

    up ,楼上能否再清晰点偶没大明白,不知道楼主明白了吗。。
    右键菜单里面获得被点的文件名似乎不在那个子键下面吧
    怎么获取的呢,不会告诉我先打印然后去获取打印参数吧,应该是先知道打印的文件名然后再送去打印吧。。难道是%1,不用获取,让操作系统自动处理了?
    也就是假如我点了C:\1.TXT,然后选打印,那就相当于
    运行这个命令:NOTEPAD.EXE C:\1.TXT,而后是:NOTEPAD.EXE /P?
    似乎不是,测试了一下,正确的可以用如下命令:NOTEPAD.EXE /p C:\1.txt
    和DOS名称行差不多用.....也就是:右键点C:\1.txt选打印,相当与运行了如下命令:NOTEPAD.EXE /p C:\1.txt
    '*****************************************************************
    那么楼主要的代码就是:SHELL "NOTEPAD.EXE /p " & mFILEPATHNAME
    后面连VBHIDE都不用,根本不用API
    '*****************************************************************
    好象楼主的问题解决的差不多了....
    可是我还是想知道,1%这个具体值,我能不能截获....希望高手解决我的疑惑
      

  3.   

    只是好奇,只是好奇,只问能否知道右键点的文件的名字虽然烂菜,但有2个要求1、别用API HOOK
    2、不要告诉我把注册表里的NOTEPAD.EXE /p 换成我的程序带个参数就可以了,或者直接连参数都省了如我所问,只想知道能否获取右键点的文件的名字
      

  4.   

    %1是 DOS年代留下来的代表第一个参数
      

  5.   

    DOS年代的遗留啊,那是我理解错了?
    NOTEPAD.EXE /p C:\1.txt
    第一个参数是/P只问能否知道右键点的文件的名字