| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3381 人关注过本帖
标题:软键盘问题
只看楼主 加入收藏
pjtyzyq
Rank: 4
等 级:业余侠客
威 望:6
帖 子:232
专家分:240
注 册:2016-2-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
软键盘问题
在表单中按下command命令按钮后软键盘可用,但总是跟随一个c:\window\system32\cmd.exe黑窗口,怎么办?
command的click中:!osk.exe
搜索更多相关主题的帖子: command window 键盘 
2016-02-29 19:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:4 
试试 ! /N7 osk.exe
2016-02-29 20:39
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:989
专家分:4966
注 册:2013-2-16
收藏
得分:4 
楼上正解,楼主要仔细看帮助。 加 N7 开关可以隐藏DOS运行框。
2016-02-29 21:27
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:4 
隐藏DOS运行框
2016-02-29 22:21
pjtyzyq
Rank: 4
等 级:业余侠客
威 望:6
帖 子:232
专家分:240
注 册:2016-2-14
收藏
得分:0 
谢谢各位指导!
2016-03-01 10:26
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
屏幕键盘

图片附件: 游客没有浏览图片的权限,请 登录注册


#Define MAX_PATH 260
#Define OSK_EXE "osk.exe"

Do Declare
= ShellExecute(0, "open", GetOskPath(), "", "", 1)
* end of main

Function GetOskPath() As String
    Local cPath

    cPath = PathCombine(;
        GETENV("windir"),;
        "sysnative",;
        OSK_EXE )

    If File(cPath)
        Return m.cPath
    Endif

    cPath = PathCombine(;
        GetSysDir(),;
        OSK_EXE )

    Return Iif(File(cPath), m.cPath, OSK_EXE)

Function GetSysDir
    Local cBuffer, nBufsize
    cBuffer=Replicate(Chr(0), MAX_PATH)
    nBufsize= GetSystemDirectory(@cBuffer, Len(cBuffer))
    Return Substr(cBuffer, 1, nBufsize)

Function PathCombine(p1, p2, p3, p4, p5) As String
    Local cBuffer, cPath1, cPath2, nIndex, nCount
    nCount = Pcount()

    Do Case
        Case nCount = 0
            Return ""
        Case nCount = 1
            Return p1
    Endcase

    cBuffer = m.p1

    For nIndex=2 To nCount
        cPath1 = Strtran(m.cBuffer, Chr(0), "")
        cPath2 = Evaluate("m.p" + Transform(m.nIndex))
        cBuffer = Replicate(Chr(0), MAX_PATH)
        PathCombineApi(@cBuffer, cPath1, cPath2)
    Next
    Return Strtran(m.cBuffer, Chr(0), "")

Procedure Declare
    Declare Integer GetSystemDirectory In kernel32;
        STRING @lpBuffer, Integer nSize

    Declare Integer ShellExecute In shell32;
        INTEGER hWindow, String lpOperation,;
        STRING lpFile, String lpParameters,;
        STRING lpDirectory, Integer nShowCmd

    Declare Integer PathCombine In shlwapi;
        AS PathCombineApi;
        STRING @lpszDest, String lpszDir,;
        STRING lpszFile

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-01 20:32
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:170
专家分:175
注 册:2009-8-20
收藏
得分:4 
回复 6楼 aaaaaa
win7旗舰,vfp9 sp2 7423运行没反应.在系统运行框中输入OSK可以调出软键盘.

[此贴子已经被作者于2016-3-2 10:56编辑过]

2016-03-02 10:54
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
6楼 的代码可以在 win7旗舰版 32位 + VFP 9 sp2 下运行。
如果是 64 位的 OS,这么做试试看:

DECLARE INTEGER ShellExecute IN shell32 INTEGER hWindow, STRING lpOperation, STRING lpFile, STRING lpParameters, STRING lpDirectory, INTEGER nShowCmd
DECLARE integer Wow64DisableWow64FsRedirection IN kernel32 Long @
DECLARE integer Wow64RevertWow64FsRedirection IN kernel32 Long @

DECLARE INTEGER SetParent IN User32 INTEGER HWND, INTEGER ParenthWnd
DECLARE INTEGER FindWindow IN user32 STRING lpClassName, STRING lpWindowName

DECLARE INTEGER GetWindowLong IN user32 INTEGER hWnd, INTEGER nIndex
DECLARE INTEGER SetWindowLong IN user32 INTEGER hWnd, INTEGER nIndex, INTEGER dwNewLong
 
DECLARE INTEGER GetLastError IN kernel32

CLEAR
PUBLIC ofrm
ofrm = CREATEOBJECT("MyForm")
ofrm.show()


DEFINE CLASS MyForm as Form
    width = 1000
    ShowWindow = 2
    desktop = .T.
    ADD OBJECT txt as textbox
    ADD OBJECT cmd as commandbutton WITH top = 50 , caption = "\Click"
    ADD OBJECT tmr as timer WITH interval = 200
    PROCEDURE load
        LOCAL lnVal
        IF LEN(GETENV("ProgramFiles(x86)"))>1
            xxx=Wow64DisableWow64FsRedirection(lnVal)
        ENDIF

        = ShellExecute(0, "open", "osk.exe", "", "", 1)

        IF LEN(GETENV("ProgramFiles(x86)"))>1
            xxx=Wow64RevertWow64FsRedirection(lnVal)
        ENDIF
    ENDPROC
    PROCEDURE tmr.timer
        * hOsk = FindWindow (.NULL., "On-Screen Keyboard")
        hOsk = FindWindow (.NULL., "屏幕键盘")
        nStyle = GetWindowLong (hOsk, -16)
        This.Enabled = .F.
        ACTIVATE SCREEN
        ?nStyle && 0x16CE0000               ,BITSET(nStyle,30)
        *- 0x80000000
        ?SetWindowLong (hOsk, -16, nStyle-0xCE0000) && tried to remove the title bar
        ?GetLastError() && Error 5 : ERROR_ACCESS_DENIED
        ?SetWindowLong (hOsk, -16, BITSET(nStyle,30)) && tried to set child
        ?GetLastError() && Error 5 : ERROR_ACCESS_DENIED
        ?SetWindowLong (hOsk, -16, nStyle+0x40000000) && tried to set child
        ?GetLastError() && Error 5 : ERROR_ACCESS_DENIED
        ?SetParent(hOsk, ThisForm.HWnd) && tried to change parent
        ?GetLastError() && Error 5 : ERROR_ACCESS_DENIED
    ENDPROC
ENDDEFINE

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-02 13:34
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:170
专家分:175
注 册:2009-8-20
收藏
得分:0 
回复 8楼 aaaaaa
欧了
2016-03-03 09:23
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:4 
回复 6楼 aaaaaa
不就是这样
! /N7 osk.exe
为什么你要写这么多,你的有什么好处??
2016-03-03 11:43
快速回复:软键盘问题
数据加载中...
 
   



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

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