分享

限制程序不能通过双击打开

 昵称225033 2014-12-30

  源代码 [ AAuto ]

import win.ui;
/*DSG{{*/
mainForm = ..win.form(text="不可双击运行";right=600;bottom=400)
mainForm.add()
/*}}*/
 
var arg = _CMDLINE;
if(#arg < 1){
        win.msgboxErr("系统组件,无法独立运行")
        return false;
}
mainForm.show()
win.loopMessage();

     

4

主题

913

帖子

4883

积分

荣誉会员

Rank: 8Rank: 8

积分
4883
沙发
发表于 2014-3-13 12:18:26 | 只看该作者
这样也可以


  源代码 [ AAuto ]

import win;
 
if( ! #_ARGV ){
    win.msgboxErr("系统组件,无法独立运行")
    return;
}


准确一点的可以获取父进程来分析一下是不是资源管理器,例如:


  源代码 [ AAuto ]

import console;
import process;
 
getParentProcess = function(){
    var pid,ppid =  process.getId();
    for processEntry in process.each( ) {   
        if( processEntry.th32ProcessID == pid ){
            ppid = processEntry.th32ParentProcessID;
        }
    }
     
    for processEntry in process.each( ) {   
        if( processEntry.th32ProcessID == ppid ){
            return processEntry.szExeFile;
        }
    }
}
 
console.log( getParentProcess(), string.cmp(getParentProcess(),"explorer.exe") == 0 )


或者用进程互斥量来判断,例如:


  源代码 [ AAuto ]

import win;
import process.mutex;
 
mutex=process.mutex("父进程名字")
if( ! mutex.conflict ){
    win.msgboxErr("系统组件,无法独立运行")
    mutex.close()
    return;
mutex.close()


或者导入process.command,加入进程群组,让进程可以相互“聊天”,例如:


  源代码 [ AAuto ]

import console;
import process.command;
 
process.command.join("进程群组名")
console.log( process.command.send("hello") == "world" )
找不到聊天对象,对暗号错误就表示不是由指定的进程所启动。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多