家中的 erp 系統目前只有兩個名額,有兩個人登入,第三人就無法登入,使用上不便
短期間無預算增加名額,只能就管理面著手,以前待的公司,erp 有定時登出的功能(約10分鐘沒操作,就會被強制登出。)
現在我也想這樣做,有沒有這樣的程式,能夠針對某程式,當程式10分鐘沒有key in 或滑鼠點擊,就自動關閉?
erp 系統會自動做存檔的動作,所以關掉程式沒有問題。
用AUTOIT
上網可以找到中文的
以下網址是我寫的用在鉅茂ERP
http://ithelp.ithome.com.tw/question/10085874
請問你是用那一家ERP
建議兩個方法:
1.無法登入時請別人先關閉登出ERP系統
例如:站起來大喊,或者電話分機一通一通打
2.寫一隻螢幕保護程式
功能是「如果ERP在執行中,就關閉ERP程式」
然後將所有電腦的螢幕保護程式都設成這個
並設定「閒置10分鐘後啟動」
小弟的意見是,應由ERP系統來調整,
畢竟ERP才是決定登入數量的閘門。
.
小弟的猜想是(不知道您的ERP系統管理方式),
您的ERP系統有紀錄登入者的地方(或是資料庫或是FILE),
您可以先找到它,然後最想出對策(例如寫程式檢視或修正,或是定時砍了它?)
echo 我要關閉你的OOXX了(惡狠狠),如果不要關閉,請按『Ctrl+C』
ECHO 倒數60秒
wait 60
taskkill /f /im "軟體檔案名稱"
另外參考:如何使用 DOS 指令將程式關閉
http://www.autocloseidle.com/
應該符合樓主需求:但要錢。
ERP正在用一定是在foreground,換句話說檢查foreground PID是不是你要的那隻程式,不是,就加counter,等到30秒之後就砍掉你觀察的那隻程式,是就把counter清掉讓他繼續用。
這只是個簡單範例而已,會寫程式真的不需要去用盜版,還是一直叫老闆買軟體,簡單的東西就DIY拿強力膠黏起來就下班了,一般開發的通用軟體也不可能完全符合你的需求,兩套通用的軟體之間一定有溝要跨過去,沒強力膠程式幫忙,就會把IT做LOW了。
<pre class="c" name="code">
#!perl
use strict;
use Win32::API;
use Win32::GuiTest qw(:ALL);
use File::HomeDir;
my $maxLimit = 30; #second
my $cmdName = "notepad.exe";
my $counterFile = File::HomeDir->my_home."/counterFile.tmp";
if(! -e "$counterFile"){
system "ECHO 0 > \"$counterFile\"";
}
system "start ".$cmdName; #run command for testing
#sleep 1;
while(1){
my $counter = `CAT \"$counterFile\"`; #read counter from counterFile.tmp
chomp $counter;
print "Counter is $counter\n";
#To get foreground window handle
my $hlWindow = GetForegroundWindow();
#==============================================================================================================
#To get PID via windows API
Win32::API::->Import("user32","DWORD GetWindowThreadProcessId( HWND hWnd, LPDWORD lpdwProcessId)") or die $^E;
my $pidLPDWORDStruct = pack( "L", 0 );
GetWindowThreadProcessId($hlWindow, $pidLPDWORDStruct);
my ($fwPid) = unpack ("L", $pidLPDWORDStruct);
print "Foreground window PID is $fwPid\n";
#==============================================================================================================
my @taskList = `tasklist.exe`;
my $targetPid=0;
my $i=0;
foreach my $line (@taskList){
chomp $line;
if($i > 4){
my ($imageName, $pid, $sessionName, $session, $memUsage) = split /\ +/, $line;
if($imageName =~ $cmdName){
$targetPid = $pid; #save target PID
if($pid == $fwPid){
print $imageName."[".$pid."] --- foreground\n";
system "ECHO 0 > \"$counterFile\""; #clear counter
last; #break loop
}else{
print $imageName."[".$pid."] --- background\n";
$counter++;
system "ECHO $counter > \"$counterFile\""; #write to counterFile.tmp
last; #break loop
}
}
}
$i++;
}
sleep(1);
if($targetPid != 0 && $counter >= $maxLimit){
system "taskkill.exe /pid $targetPid"; #kill process
system "ECHO 0 > \"$counterFile\"";
}
}
exit 0;
架一個RDP Server ....
可以設定多久沒動作踢走User...