搜索
aardio官方社区 门户 查看主题

登陆窗口

发布者: 游戏 | 发布时间: 2011-8-14 05:35| 查看数: 16928| 评论数: 22|帖子模式

本帖最后由 游戏 于 2011-8-14 05:38 编辑

这里要实现一个简单的登陆窗口:
       打开程序时,先弹出登陆对话框,要求用户输入用户名和密码,只有用户名和密码都正确了,才能进入主窗口。

主窗口位置:\main.aardio;
主窗口代码:

import win.ui;
import web.form
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=249;text="已经登陆";border="dialog frame";right=349 )
winform.add(
static={ bottom=135;color=255;right=265;left=84;top=101;font=LOGFONT( name=
"宋体";h=-29;out=3;family=2;clip=2;quality=1 );z=1;text="Hello world!";transparent=1;cls="static" }
)
/*}}*/

var loginForm = winform.loadcode("\res\login.aardio" );
loginForm.show(
true);

win.loopMessage();


————————————————————————————————————————————————————

登陆窗口位置:\res\login.aau;
登陆窗口代码:

import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=189;max=false;right=349;border="dialog frame";text="登陆窗口" )
winform.add(
ed_pass={ bottom=85;right=282;left=130;top=61;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=5;text="";edge=1;cls="edit" };
static3={ right=239;bottom=124;text=
"默认账号,密码: admin";left=115;top=107;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=3;cls="static" };
btn_login={ bottom=171;text=
"登陆";left=58;top=135;font=LOGFONT( name="宋体";h=-12 );z=7;right=149;cls="button" };
ed_name={ bottom=44;right=281;left=129;top=20;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=6;text="";edge=1;cls="edit" };
static={ right=123;bottom=43;text=
"账号:";left=61;top=26;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=1;cls="static" };
btn_exit={ bottom=171;text=
"退出";left=208;top=135;font=LOGFONT( name="宋体";h=-12 );z=4;right=299;cls="button" };
static2={ right=124;bottom=84;text=
"密码:";left=62;top=67;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=2;cls="static" }
)
/*}}*/

var flag = false;

winform.btn_exit.oncommand =
function(id,event){
    winform.close();
}

winform.btn_login.oncommand =
function(id,event){
   
if(!(winform.ed_name.text = "admin" and winform.ed_pass.text = "admin")){
        winform.msgbox(
"用户名或密码错误!","错误")
        
return ;
    }
   
    flag =
true;
    winform.close();
}

winform.wndproc =
function(hwnd,message,wparam,lparam){
   
select(message) {//判断消息类型
        case 0x10/*_WM_CLOSE窗口关闭消息*/{
            
if(flag){
                winform.parent.show();
            }
            
else {
                winform.parent.close();
            }
        }
    }
}

winform.show()
win.loopMessage();
return winform;




最新评论

look 发表于 2011-8-14 07:48:21

[i=s] 本帖最后由 look 于 2011-8-14 08:28 编辑 [/i] 这样似乎不合理,我一开始也是这么设计的,可是后来一想,如果有人,停留在登

本帖最后由 look 于 2011-8-14 08:28 编辑

这样似乎不合理,我一开始也是这么设计的,可是后来一想,如果有人,停留在登陆窗口,不登陆,用工具遍历窗口,查到主窗口句柄,显示主窗口,就可以绕过登陆窗口,直接进入主窗口!


//这样就被破解了!
import winex;
var hwnd=winex.find("AAU_FORM","已经登陆")
win.show(hwnd);


游戏 发表于 2011-8-14 11:11:48

[quote][size=2][color=#999999]look 发表于 2011-8-14 07:48[/color] [url=forum.php?mo

look 发表于 2011-8-14 07:48
这样似乎不合理,我一开始也是这么设计的,可是后来一想,如果有人,停留在登陆窗口,不登陆,用工具遍历窗口,查到 ...

这样的确可以绕过登陆窗口,版主真细心。
只要 再建一个子窗口 用来做为登陆以后的窗口,这样应该没办法绕过登陆了。
编程 发表于 2011-8-14 11:37:17

[i=s] 本帖最后由 编程 于 2011-8-14 12:11 编辑 [/i] main.aau [quote][color=#0000ff]import

本帖最后由 编程 于 2011-8-14 12:11 编辑

main.aardio
import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=249;text="已经登陆";border="dialog frame";right=349 )
winform.add(
static={ bottom=135;color=255;right=265;left=84;top=101;z=1;text=
"Hello world!";transparent=1;cls="static" }
)
/*}}*/

var loginForm = winform.loadcode("\res\login.aardio" );
var logined = loginForm.doModal(winform)

//如果没有登录,直接退出主程序
if( ! logined )
   
return;
   
//所有需要登录后才能执行的函数、事件都写在这后面
   
//显示主窗口   
winform.show()
win.loopMessage();

\res\login.aau
import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; edge=1;bottom=189;max=false;right=349;border="dialog frame";text="登陆窗口" )
winform.add(
ed_pass={ bottom=85;right=282;left=130;top=61;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=5;text="";edge=1;cls="edit" };
static3={ right=239;bottom=124;text=
"默认账号,密码: admin";left=115;top=107;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=3;cls="static" };
btn_login={ bottom=171;text=
"登陆";left=58;top=135;font=LOGFONT( name="宋体";h=-12 );z=7;right=149;cls="button" };
ed_name={ bottom=44;right=281;left=129;top=20;font=LOGFONT( name=
"宋体";h=-12 );tabstop=1;z=6;text="";edge=1;cls="edit" };
static={ right=123;bottom=43;text=
"账号:";left=61;top=26;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=1;cls="static" };
btn_exit={ bottom=171;text=
"退出";left=208;top=135;font=LOGFONT( name="宋体";h=-12 );z=4;right=299;cls="button" };
static2={ right=124;bottom=84;text=
"密码:";left=62;top=67;font=LOGFONT( name="宋体";h=-12 );transparent=1;z=2;cls="static" }
)
/*}}*/

winform.btn_exit.oncommand =
function(id,event){
     winform.endModal()
}

winform.btn_login.oncommand =
function(id,event){
   
if(!(winform.ed_name.text = "admin" and winform.ed_pass.text = "admin")){
        winform.msgbox(
"用户名或密码错误!","错误")
        
return;
    }
   
    winform.endModal(
"登录成功" )
}

return winform;

点评

同意: 5.0 真棒: 5.0
同意: 5 真棒: 5
这代码不错,不过注册过的直接保存配置 下次不再进入注册界面不是更理想?  发表于 2012-4-28 21:15
这个代码有些问题吧,退出会进入到主窗口  发表于 2011-8-14 11:45
fanishare 发表于 2011-8-14 11:41:44

我也在搞这个,汗的,看看好!

我也在搞这个,汗的,看看好!
ninja911 发表于 2011-8-14 11:48:12

呵呵。昨天和lujjjh大哥纠结了一下午,没有完美解决方案,晚上又和“游戏”大侠讨论这个,终于解决了,1楼源码是比较完美的父子窗口的一个demo了

呵呵。昨天和lujjjh大哥纠结了一下午,没有完美解决方案,晚上又和“游戏”大侠讨论这个,终于解决了,1楼源码是比较完美的父子窗口的一个demo了
编程 发表于 2011-8-14 12:07:24

to ninja911: 1楼的代码写的纠结就算了,居然还是一堆人纠结出来的。 to fanishare: 代码测试没有问题, 发贴的时候把 lo

to ninja911:
1楼的代码写的纠结就算了,居然还是一堆人纠结出来的。

to fanishare:
代码测试没有问题,
发贴的时候把 logined改成winform.logined 了,忘记了winform对所有空值会返回一个table,
所以你会看到主窗口,我已经改过来了,谢谢提醒!
aonoco 发表于 2011-8-14 12:47:16

CC{:3_57:}

CC
ninja911 发表于 2011-8-14 12:48:17

一个比一个NB!! 赞一个

一个比一个NB!! 赞一个
o00viw 发表于 2011-8-14 14:10:31

[quote][size=2][color=#999999]编程 发表于 2011-8-14 12:07[/color] [url=forum.php?mod=

编程 发表于 2011-8-14 12:07
to ninja911:
1楼的代码写的纠结就算了,居然还是一堆人纠结出来的。

为什么不用主窗口作为登录窗口,而子窗口作为主界面呢?

还可以给不同的用户给予不同的界面、权限等等。
编程 发表于 2011-8-14 15:24:23

[quote][size=2][color=#999999]o00viw 发表于 2011-8-14 14:10[/color] [url=forum.php?

o00viw 发表于 2011-8-14 14:10
为什么不用主窗口作为登录窗口,而子窗口作为主界面呢?

还可以给不同的用户给予不同的界面、权限等等 ...

嗯,这方法也不错,更简单,功能还可以更多。
技术真的不重要,重要的是思路,有好的思路,总是可以化繁为简。
fanishare 发表于 2011-8-14 19:54:13

编程的代码确实干练,呵呵,就是俺是初学者,还不是很明白一些命令的作用,domodal和endmodal等。

编程的代码确实干练,呵呵,就是俺是初学者,还不是很明白一些命令的作用,domodal和endmodal等。
ninja911 发表于 2011-8-15 15:52:19

继续发问 如果登录成功,进入父窗口,那么父窗口有一个按钮“注销”,点击注销后,怎么才能隐藏父窗口,然后又显示出登录子窗口呢??

继续发问

如果登录成功,进入父窗口,那么父窗口有一个按钮“注销”,点击注销后,怎么才能隐藏父窗口,然后又显示出登录子窗口呢??
look 发表于 2011-8-15 19:02:08

[i=s] 本帖最后由 look 于 2011-8-15 19:03 编辑 [/i] [quote][color=#999999]ninja911 发表于 2

本帖最后由 look 于 2011-8-15 19:03 编辑
ninja911 发表于 2011-8-15 15:52 继续发问 如果登录成功,进入父窗口,那么父窗口有一个按钮“注销”,点击注销后,怎么才能隐藏父窗口, ...
代码都有现成的了,组织一下就可以了!把你的问题想清楚,你是不知道怎么隐藏窗口吗?你是不知道怎样再次显示登录子窗体吗?百度或谷歌站内搜索"隐藏"、"子窗体"试试!
ninja911 发表于 2011-8-15 19:49:17

[quote][size=2][color=#999999]look 发表于 2011-8-15 19:02[/color] [url=forum.php?mo

look 发表于 2011-8-15 19:02
代码都有现成的了,组织一下就可以了!把你的问题想清楚,你是不知道怎么隐藏窗口吗?你是不知道怎样再次显 ...

就类似于QQ,已经登陆上线。然后我想切换QQ号登陆,又会弹出QQ登陆界面。
50004 发表于 2011-8-25 01:42:03

不是很懂呀

不是很懂呀
cxq863 发表于 2012-1-12 09:29:57

学习了,呵呵

学习了,呵呵
googleabc 发表于 2012-4-26 12:48:39

mark

mark
China-Min 发表于 2013-1-18 16:51:53

这个留着!谢谢楼主啊!嘿嘿!

这个留着!谢谢楼主啊!嘿嘿!
12下一页

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-1-19 17:44 , Processed in 0.062500 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表