A:Win32::CopyFile(FROM, TO, OVERWRITE) ---拷贝文件
Win32::CopyFile("D:\\Test_Code\\Temp\\test.pl","D:\\Test_Code\\Temp\\test1.pl",0);
注:OVERWRITE --- 0 :如果文件存在不覆盖 1 :如果文件覆盖
目录要加 "\\" 双斜杠
B:Win32::CreateDirectory(DIRECTORY) --- 新建目录
C:Win32::CreateFile(FILE) ---- 新建文件
D:Win32::FormatMessage(ERRORCODE) --- 转换windows错误号为错误信息
$error = Win32::FormatMessage(26); $error为26号错误的具体信息
E:Win32::GetLastError() ---- 获取调用win32 API 的最近错误号,和FormatMessage一起用于错误信息的打印
print Win32::FormatMessage( Win32::GetLastError() );
F:Win32::GetCwd() ---- 获取当前目录
$b = Win32::GetCwd();
G:Win32::Sleep(TIME) ---- sleep指定时间
H:Win32::GetCurrentProcessId() ---- 获取当前进程ID,类似与“$$”
该模块还有很多其它功能,我只列出了一些我用过的功能,其它方法 search.cpan.ora 上都有详细的说明。
2:"Win32::Process" 模块用于打开和控制windows应用程序,例如打开和关闭金山词霸吧。这个在自动化测试中还是要经常使用的。
A:Win32::Process::Create($obj,$appname,$cmdline,$iflags,$cflags,$curdir) ----打开一个程序
例:使用UE打开文本文件vi.txt。
my $result = Win32::Process::Create($ProcessObj,
"D:\\tools\\UltraEdit\\Uedit32.exe",
"Uedit32 C:\\Documents and Settings\\user\\Desktop\\vi.txt",
0,
NORMAL_PRIORITY_CLASS,
".");
参数说明: $obj ---- 返回的进程对象
$appname ---- 应用程序的执行文件,目录要加双斜杠 "\\" 。
$cmdline ---- 应用程序的命令参数。
$iflags ---- 0/1 继承父进程的进程值与否。
$cflags ---- 程序运行的方式。值可以为:
CREATE_DEFAULT_ERROR_MODE
CREATE_NEW_CONSOLE
CREATE_NEW_PROCESS_GROUP
CREATE_NO_WINDOW
CREATE_SEPARATE_WOW_VDM
CREATE_SUSPENDED
CREATE_UNICODE_ENVIRONMENT
DEBUG_ONLY_THIS_PROCESS
DEBUG_PROCESS
DETACHED_PROCESS
HIGH_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
INFINITE
NORMAL_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_ERROR_RETURN
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_IDLE
THREAD_PRIORITY_LOWEST
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_TIME_CRITICAL
参数含义偶就不解释了,直接看参数变量的英文意思就明白了。
$curdir ----- 当前目录。"." 表示当前目录。和Unix下类似。
B:Win32::Process::KillProcess($pid, $exitcode) ---关闭指定进程,并设置进程的退出值。
C:$ProcessObj->Suspend() ---- 挂起create打开的进程
D:$ProcessObj->Resume() ---- 恢复create打开的进程
E:$ProcessObj->Kill($exitcode) ---- 关闭create打开的进程,并设置进程的退出值。
F:$ProcessObj->Wait($timeout) --- 等待进程结束,无限期等待设置timeout值为“INFINITE”
G:$ProcessObj->GetProcessID() --- 获取create打开的进程的进程ID。
3:"Win32::Process::Info" 模块用于获取进程的详细信息。这个模块偶用的不多,只使用了其中的一个方法GetProcInfo(),获取当前windows的进程列表。用的不多,偶就不多说了,大家自己看资料研究吧。
贴出偶写的一段代码,仅供参考:
#create a new process for YoDaoDict.exe
sub create_process {
my $result = Win32::Process::Create($ProcessObj,
"D:\\tools\\UltraEdit\\Uedit32.exe",
"Uedit32 C:\\Documents and Settings\\user\\Desktop\\vi.txt",
0,
NORMAL_PRIORITY_CLASS,
".");
if (!$result) {
die ErrorReport();
}
else {
my $new_pid = $ProcessObj->GetProcessID();
return $new_pid;
}
}
#check the process YoDaoDict.exe is exist or not
sub check_process {
my $pi = Win32::Process::Info->new() or die "Use Win32::Process::Info failed.$@";
my @info = grep {
defined $_->{"Name"} && $_->{"Name"} =~ /YodaoDict.exe/
} $pi->GetProcInfo();
if (defined @info) {
return $info[0]->{"ProcessId"};
}
else {
return 0;
}
}
#kill the process
sub kill_process {
my ($process_id) = @_;
Win32::Process::KillProcess($process_id,0) or die "Kill the Process_ID:$process_id failed.$@";
}
sub ErrorReport{
print Win32::FormatMessage( Win32::GetLastError() );
}