标题:为什么提示 没有找到打开PDF文件的窗口
只看楼主
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
结帖率:95.71%
已结贴  问题点数:20 回复次数:8 
为什么提示 没有找到打开PDF文件的窗口
lpszfile=getFILE()
 #define WM_CLOSE  0x0010
     IF FILE(lpszfile)
         DECLARE INTEGER ShellExecute IN Shell32.DLL INTEGER HWND,STRING,STRING lpszFile,STRING,STRING,INTEGER
         DECLARE Long FindWindow IN WIN32API ;
         String lpClassName, String lpWindowName
         DECLARE Long PostMessage IN WIN32API ;
         Long hWnd, Long Msg, Long wParam, Long lParam
         =ShellExecute(0,'Open',lpszfile,'','',1)
         INKEY(5)
         =ShellExecute(0,'print',lpszfile,'','',1)
         INKEY(5)
         m.hWnd = FindWindow(null, JUSTFNAME(lpszfile) +' - Adobe Reader')
         IF (m.hWnd == 0)
             MessageBox('没有找到打开 pdf 文件的窗口。')
         ELSE
             PostMessage(m.hWnd, WM_CLOSE, 0, 0)
         ENDIF
         CLEAR DLLs "ShellExecute", "FindWindow", "PostMessage"
         INKEY(5)
     ENDIF

 QUIT


***************
以上是论坛(或网络)上下载来的代码,当时没记录,出处在哪也就想不起来了。经测试 可以打开选定的PDF文档,并输送到打印机打印出来,

但VF不会关闭被它打开的PDF文档窗口。麻烦高手们诊断诊断!谢谢


搜索更多相关主题的帖子: 打开 PDF 窗口 STRING Long 
2017-11-29 15:24
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
里面很多单词都不认识,谁能注释一下

只求每天有一丁点儿的进步就可以了
2017-11-29 15:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
先枚举窗口,看看有无FindWindow()要找的窗口。
2017-11-29 16:35
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:10 
回复 楼主 wengjl
我在win7 32位下测试,可以正常打开pdf,也能正常关闭打开的pdf文件窗口。谢谢!
2017-11-30 07:22
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
终于找到原因了

将 m.hWnd = FindWindow(null, JUSTFNAME(lpszfile) +' - Adobe  Reader')

改成   m.hWnd = FindWindow(null, JUSTFNAME(lpszfile) +' - Adobe Acrobat Pro')

就可以了。 原来是我的电脑上装了 “Adobe Acrobat Pro” 打开的PDF文档窗口标题不一样。


这样就有问题来了:VFP 如何判断打开的PDF文档是 Adobe Acrobat Pro 还是 Adobe  Reader 呢? 还是其他 呢?




[此贴子已经被作者于2017-11-30 08:46编辑过]


只求每天有一丁点儿的进步就可以了
2017-11-30 08:45
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
能不能像VFP打开EXCEL那样

先判断电脑是否装Adobe 的软件 再创建PDF的对象,使用后再释放对象

只求每天有一丁点儿的进步就可以了
2017-11-30 08:49
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
以下是引用吹水佬在2017-11-29 16:35:22的发言:

先枚举窗口,看看有无FindWindow()要找的窗口。



版主好:VFP将电脑上所有打开的窗口信息读到数据表中代码如何写?烦请赐教,谢谢!

只求每天有一丁点儿的进步就可以了
2017-11-30 16:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用wengjl在2017-11-30 16:15:03的发言:




版主好:VFP将电脑上所有打开的窗口信息读到数据表中代码如何写?烦请赐教,谢谢!

#DEFINE    GW_HWNDFIRST   0
#DEFINE    GW_HWNDNEXT    2
#DEFINE    GW_CHILD       5

DECLARE LONG GetWindow IN User32 LONG hWnd, LONG nCmd
DECLARE LONG GetWindowText IN User32 LONG hWnd, STRING @lpString, LONG nMaxCount
DECLARE LONG GetClassName IN User32 LONG hWnd, STRING @lpString, LONG nMaxCount
DECLARE LONG IsWindowVisible IN User32 LONG hWnd

CREATE CURSOR TEMP (hWnd_wText C(50), wClass C(50), hWnd I)

_EnumWindows(_VFP.hWnd, .T., .T., GW_HWNDFIRST, 0)

GO TOP
BROWSE
USE
CLEAR DLLS
RETURN


** 枚举窗口
FUNCTION _EnumWindows(nhWnd, bIsVisible, bIsChild, nCmd, nLay)
    LOCAL szText, szClass, nLenText, nLenClass
   
    szText  = SPACE(256)
    szClass = SPACE(256)

    nhWnd = GetWindow(nhWnd, nCmd)
   
    DO WHILE (nhWnd != 0)
        IF !bIsVisible OR (bIsVisible AND (IsWindowVisible(nhWnd) == 1))
            nLenText  = GetWindowText(nhWnd, @szText, 256)
            nLenClass = GetClassName(nhWnd, @szClass , 256)
            
            INSERT INTO TEMP VALUES (SPACE(nLay*2)+TRANSFORM(nhWnd)+" "+LEFT(szText, nLenText), LEFT(szClass , nLenClass), nhWnd)
            
            IF bIsChild
                _EnumWindows(nhWnd, bIsVisible, bIsChild, GW_CHILD, nLay+1)
            ENDIF
        ENDIF
   
        nhWnd = GetWindow(nhWnd, GW_HWNDNEXT)
    ENDDO
ENDFUNC
收到的鲜花
  • wengjl2017-12-01 07:43 送鲜花  10朵  
2017-11-30 16:28
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
@吹水佬 谢谢!

慢慢研究学习。 再次感谢!

只求每天有一丁点儿的进步就可以了
2017-11-30 17:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482936-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.000933 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved