HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0420
awqこれを改良して欲しいです。7解決


awq

リンク

2012/4/20(Fri) 07:25:57|NO.46168

このスクリプトの評価と改良をお願いします!


#include "user32.as" scr =2 *start bgscr 0,ginfo(20),ginfo(21),0,0,0 : hParent = hwnd//ブルースクリーンで埋め尽くす color 0,0,255 : boxf exist "password.tlt" if strsize = -1 : gosub *npass//パスワードファイルがない場合作成する title "プライバシー保護"//タイトルなしは寂しいので枠なしでもやっておくべき *primary scr = scr+1//何回も新規ユーザー登録した際にscreenが効くようにするため gsel 0 : color 255,255,255 notesel data noteload "password.tlt" nmax = noteinfo(0) pos 260,260 : font "System",40,0 mes "一時的に退席しています。" mes "プライバシーの侵害になるため、" mes "マウス及びキーボードに触れないでください。" font "",20 : objsize 450,22 acow = "" pass = "" repeat notemax if cnt\2 == 1 : continue noteget name,cnt acow = acow+"\n"+name loop pos 240,420 mes"ユーザー名、パスワードを入力してください。" font "",20 : pos 180,443 : mes "ユーザー名\n\nパスワード" color 0,0,0 : boxf 288,481,740,504 pos 290,444 : combox acc,40,acow pos 290,482 : input pass hInput = objinfo(stat, 2) sendmsg hInput, $CC, '*'//パスワードのところは*で隠す objsize ,22 pos 768,444 button "ログオン",*log_on button "新規作成",*npass button "再起動",*start *main onexit gosub *main//Alt+F4で消えないようにする objsel 1//パスワードにカーソルが合う sdim psw,100//パスワードを格納する変数に100バイトの空きを用意 repeat //↑これで50文字までのパスワードに対応、動作を軽快に if acc ! syspass {//変数syspassは元々存在しないためこの式で通る syspass = acc//ユーザー名の変数accが変わるとどの行を読み込むかが変わる if syspass = 1 : noteget psw,1 if syspass = 2 : noteget psw,3 if syspass = 3 : noteget psw,5 if syspass = 4 : noteget psw,7 if syspass = 5 : noteget psw,9 if syspass = 6 : noteget psw,11 if syspass = 7 : noteget psw,13 if syspass = 8 : noteget psw,15 if syspass = 9 : noteget psw,17 if syspass = 10 : noteget psw,19 if syspass = 11 : noteget psw,21 if syspass = 12 : noteget psw,23 if syspass = 13 : noteget psw,25 if syspass = 14 : noteget psw,27 if syspass = 15 : noteget psw,29 if syspass = 16 : noteget psw,31 if syspass = 17 : noteget psw,33 if syspass = 18 : noteget psw,35 if syspass = 19 : noteget psw,37 if syspass = 20 : noteget psw,39 } wait 1 loop stop//保険 *npass if nmax >= 40 :dialog "登録上限に達しています。\n新しくパスワードを作成する場合は、\n別のフォルダにソフトをコピーしてください。",1,"登録不可" : goto *main//パスワードを20個までに screen scr ,200,130 objsize 60,24 if strsize = -1 {//ファイルがあるか無いかで区別 dialog "正式なパスワード設定ファイルがありません\n新しく設定ファイルを作成します",0,"ファイル捜索" }else : dialog "新しくユーザー名とパスワードを設定します",0,"新規登録" newacow = "" newpass = "" pos 0,0 mes " 新規パスワードの登録\n パスワード入力待ち" font "",20 : pos 0,48 : mes " ユーザー名\n パスワード" pos 110,48 : input newacow : input newpass hInput = objinfo(stat, 2) sendmsg hInput, $CC, '*' button "登録",*bagin stop *log_on if syspass = 0 : goto*main if pass = psw{//パス入力passとパスデータpswの文字列が一致しているか確認 dialog "PCのロックを解除しました。",0,"ロック解除" end} dialog "パスワードが違います。",0,"パスワード入力"//このまま下にプログラムが流れるので自動的にmainに帰る goto *main *bagin notesel data noteadd newacow : noteadd newpass notesave "password.tlt" dialog "登録しました。" goto *start



この記事に返信する


mamo

リンク

2012/4/20(Fri) 10:56:01|NO.46171

改良とのことならば、新規登録が誰でも可能なのはまずいのでは?
OSのログオフなどの機能を使ってロックするのが一般的なのではとも思う。



awq

リンク

2012/4/20(Fri) 16:31:07|NO.46173

>>mamoさん
なるほど。新規作成が自由なのはまずいですか。
新規作成は別にしておくのがいいですね。
別途にして組んでおきます。

「OSのログオフなどの機能」とありますが、
ログオフには時間がかかるため、
簡単に済ますにはこのような方法をとるのがいいと考えました。
---------------------
本当は別途でパスワード削除のスクリプトを作成しようと思うのですが
どうもうまくいかないんですよ…



KA

リンク

2012/4/20(Fri) 16:39:40|NO.46174

スクリーンセーバーの復帰パスワードみたいな
使い方を想定しているのでしょうか。



awq

リンク

2012/4/20(Fri) 19:10:22|NO.46179

あ、はい。
とりあえずは。画面を見られないようにする、というのが目的なので。


あと訂正。
*main
onexit gosub *main//Alt+F4で消えないようにする objsel 1//パスワードにカーソルが合う sdim psw,100//パスワードを格納する変数に100バイトの空きを用意 repeat //↑これで50文字までのパスワードに対応、動作を軽快に if acc ! syspass {//変数syspassは元々存在しないためこの式で通る syspass = acc//ユーザー名の変数accが変わるとどの行を読み込むかが変わる code = syspass*2-1 noteget psw,code } wait 1 loop



sage

リンク

2012/4/22(Sun) 16:41:04|NO.46210

マジレスすると、
Ctrl+Alt+Delete(OSレベル)で突破できるのと#1
Alt+Tabで別ソフトを前に持ってくることができること#2
が気になりますね。

#1については、ウィルス扱いされるといやなのでコードは公開できませんが
#2については、AltあるいはTabを押した瞬間に(onkey)、ウィンドウを再構築(再起動)すると
前に来るようになります。

似たようなのを作ったことがあるので、がんばってください。



awq

リンク

2012/4/23(Mon) 12:59:23|NO.46222

>>sageさん

ご指導ありがとうございます。
#2番、達成できました!ありがとうございます。

#1番は何とか模索してみます。



大富豪A

リンク

2012/4/23(Mon) 15:32:33|NO.46223

無意味な投票ですが・・・
>Windows Vista および Windows 7の場合<
>[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックし、
>「Control Userpasswords2」と入力して Enter キーを押します。
>[詳細] タブ (または [コントローラー ID] タブ) をクリックします。
>Ctrl + Alt + Del シーケンスを有効または無効にする場合は、
>[セキュリティで保護されたログオン] セクションの
>[ユーザーが必ず Ctrl + Alt + Del キーを押す] チェック ボックスをオフにします。
><転載元 : http://support.microsoft.com/kb/308226/ja#LetMeFixItMyselfAlways>
をhspでこれができれば#1が実現できるのではないでしょうか?



ONION software Copyright 1997-2023(c) All rights reserved.