Windows API的Tcl扩展包TWAPI介绍
来源:互联网 发布:淘宝网店兼职 编辑:程序博客网 时间:2024/05/22 10:37
TWAPI(Tcl Windows API) 提供了通过Tcl脚本访问Windows API的方法。这个扩展包可以支持WindowNT系列操作系统(NT 4.0, Windows 2000, Windows XP and Windows 2003) API的调用。下面是这个包提供的各API的分类目录。
具体的文档可以参考Script.NET中的Tcl帮助文档。
Overview Tcl Windows API extension overview. Installation Installation requirements and instructions. Win32 raw API Direct access to the Win32 API. Window management Commands related to management of windows. Desktops and Window stations Commands related to desktops and window stations. Windows Shell Windows shell commands. Keyboard and mouse input Simulation of user input and support for system-wide hotkeys. Sound Basic sound functions. Clipboard Commands related to accessing the clipboard. System Operating system and machine configuration and control. Processes, threads and DLLs Commands related to processes, threads and dynamic link libraries. Handles Commands for managing operating system handles. Services Commands for configuring and monitoring Windows services. Network configuration Commands related to network configuration. Disks and Volumes Commands related to disks and volumes. Network shares Commands related to management of network shares. Users and Groups Commands related to user and group accounts. Security and access control Commands related to authentication and access control. Event log Commands relating to reading and writing the Windows event log. Windows INI file Commands for accessing Windows INI files. Console Commands related to Windows consoles. Scheduler Commands related to managing scheduled jobs through the task scheduler. Internationalization Commands related to internationalization. Miscellaneous Various TWAPI ancillary commands. Printers Printer management. Examples Tcl Windows API usage examples. Version History Tcl Windows API extension version history.
Script.NET中使用TWAPI扩展包写了一个系统工具,可以查看Windows系统的进程、服务、端口信息,界面和代码如下。
#################################################################
# Script.NET 系统工具页面脚本
# 作者:blueant
# 版本:2.0
# 日期:2006-08-25
#################################################################
package require TclFace
package require twapi
#-------------------------------------------------------------
# TLFAppPage class define
#-------------------------------------------------------------
class TLFAppPage {
inherit TLFPage
constructor {} {};
### data member ###
protected
variable _objTextInfo;
protected
variable _tableInfo;
protected
variable _pageType; # 页面类型
protected
variable _svcName; # 当前服务名
### public methods ###
public
method ProcessFormValue {name value}; # 处理Form结果
public
method OnCreate {}; # 创建页面
public
method OnInitialUpdate {}; # 页面初始化
public
method OnEndAction {}; # 动作执行完后的操作
public
method OnServiceStart {}; # 启动服务
public
method OnServiceStop {}; # 停止服务
}
#-------------------------------------------------------------
# 单元构造函数
#-------------------------------------------------------------
body TLFAppPage::constructor {} {
chain;
SetFormAction;
set _pageType
"";
set _svcName
"";
}
#-------------------------------------------------------------
# 处理Form结果
#-------------------------------------------------------------
body TLFAppPage::ProcessFormValue {name value} {
if {[chain $name $value] == true} {
return true
}
switch $name {
page {set _pageType $value}
svc {set _svcName $value}
}
}
#-------------------------------------------------------------
# 创建页面
#-------------------------------------------------------------
body TLFAppPage::OnCreate {} {
set _objTextInfo [AppendText
""]
$_objTextInfo SetColor #800000
set _tableInfo [CreateObject TLFTable]
}
#-------------------------------------------------------------
# 页面初始化
#-------------------------------------------------------------
body TLFAppPage::OnInitialUpdate {} {
}
#-------------------------------------------------------------
# 动作执行完后的操作
#-------------------------------------------------------------
body TLFAppPage::OnEndAction {} {
if {$_pageType == ""} {
set _pageType
"process"
}
# 页面选择
LangStringEC STR_PAGE(process) "Processes"
"进程"
LangStringEC STR_PAGE(service) "Services"
"服务"
LangStringEC STR_PAGE(connection) "Network Connections"
"网络连接"
set lsText {}
foreach page {process service connection} {
if {$page == $_pageType} {
lappend lsText $STR_PAGE($page)
} else {
lappend lsText
"<a href='tcl:<file>[info script]?page=$page'>$STR_PAGE($page)</a>"
}
}
$_objTextInfo SetText
"<b>[join $lsText " | "]</b>"
# 进程列表
if {$_pageType == "process"} {
LangStringEC STR_INFO
"PID"
"进程ID"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Name"
"进程名"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"User"
"用户名"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Path"
"进程路径"
$_tableInfo AddColumn $STR_INFO
set lsPID [lsort -integer [twapi::get_process_ids]]
foreach PID $lsPID {
set lsInfo [twapi::get_process_info $PID -name -path -user]
$_tableInfo AddLine2 [list $PID] [list [lindex $lsInfo
1]] /
[list [lindex $lsInfo
5]] [list [lindex $lsInfo
3]]
}
}
# 服务列表
if {$_pageType == "service"} {
LangStringEC STR_INFO
"PID"
"进程ID"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Name"
"服务名"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"State"
"状态"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Description"
"进程描述"
$_tableInfo AddColumn $STR_INFO
set lsService [twapi::get_multiple_service_status -win32_own_process -win32_share_process]
set index
0
foreach svc $lsService {
set svcName [twapi::kl_get $svc name]
set svcPid [lindex [twapi::get_service_status $svcName] 17]
set svcDispName [twapi::kl_get $svc displayname]
set svcState [twapi::kl_get $svc state]
set svcStateText $svcState
switch $svcState {
running {set svcStateText
"$svcState <a title='stop service' href='tcl:<file>[info script]?page=$_pageType&svc=$svcName&action=OnServiceStop'><img src='image/del.gif' border=0></a>"}
stopped {set svcStateText
"$svcState <a title='start service' href='tcl:<file>[info script]?page=$_pageType&svc=$svcName&action=OnServiceStart'><img src='image/this.gif' border=0></a>"}
}
set svcCommand [lindex [twapi::get_service_configuration $svcName -command] 1]
if {$svcPid == 0} {set svcPid
""}
$_tableInfo AddLine2 [list $svcPid] /
[list
"<a href='#javascript:return false;' title='$svcCommand'>$svcDispName</a>"] /
[list $svcStateText] /
[list [lindex [twapi::get_service_configuration $svcName -description] 1]]
# 如果服务在运行,设置行的特殊颜色
if {$svcState == "running"} {
$_tableInfo SetOneLineStyle $index #ffffd8 #000080
}
incr index
}
}
# 网络连接列表
if {$_pageType == "connection"} {
LangStringEC STR_INFO
"Protocal"
"协议"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"State"
"状态"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Process"
"进程"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Remote Host"
"远程主机"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Remote Port"
"远程端口"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Local Host"
"本地主机"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Local Port"
"本地端口"
$_tableInfo AddColumn $STR_INFO
foreach conn [twapi::get_tcp_connections] {
set connState [twapi::kl_get $conn -state]
$_tableInfo AddLine2 [list
"TCP"] /
[list $connState] /
[list [twapi::get_process_name [twapi::kl_get $conn -pid]]] /
[list [twapi::kl_get $conn -remoteaddr]] /
[list [twapi::kl_get $conn -remoteport]] /
[list [twapi::kl_get $conn -localaddr]] /
[list [twapi::kl_get $conn -localport]]
}
foreach conn [twapi::get_udp_connections] {
$_tableInfo AddLine2 [list
"UDP"] /
[list
""] /
[list [twapi::get_process_name [twapi::kl_get $conn -pid]]] /
[list
"*"] /
[list
"*"] /
[list [twapi::kl_get $conn -localaddr]] /
[list [twapi::kl_get $conn -localport]]
}
}
CreateObject TLFVariable
"page" $_pageType
}
#-------------------------------------------------------------
# 启动服务
#-------------------------------------------------------------
body TLFAppPage::OnServiceStart {} {
twapi::start_service $_svcName -wait
10000
}
#-------------------------------------------------------------
# 停止服务
#-------------------------------------------------------------
body TLFAppPage::OnServiceStop {} {
twapi::stop_service $_svcName -wait
10000
}
#-------------------------------------------------------------
# main
#-------------------------------------------------------------
LangString STR_PAGE_TITLE chinese
"操作系统工具"
LangString STR_PAGE_TITLE english
"Windows System Tool"
set page [TLFCreatePage $STR_PAGE_TITLE TLFAppPage]
delete object $page;
具体的文档可以参考Script.NET中的Tcl帮助文档。
Overview Tcl Windows API extension overview. Installation Installation requirements and instructions. Win32 raw API Direct access to the Win32 API. Window management Commands related to management of windows. Desktops and Window stations Commands related to desktops and window stations. Windows Shell Windows shell commands. Keyboard and mouse input Simulation of user input and support for system-wide hotkeys. Sound Basic sound functions. Clipboard Commands related to accessing the clipboard. System Operating system and machine configuration and control. Processes, threads and DLLs Commands related to processes, threads and dynamic link libraries. Handles Commands for managing operating system handles. Services Commands for configuring and monitoring Windows services. Network configuration Commands related to network configuration. Disks and Volumes Commands related to disks and volumes. Network shares Commands related to management of network shares. Users and Groups Commands related to user and group accounts. Security and access control Commands related to authentication and access control. Event log Commands relating to reading and writing the Windows event log. Windows INI file Commands for accessing Windows INI files. Console Commands related to Windows consoles. Scheduler Commands related to managing scheduled jobs through the task scheduler. Internationalization Commands related to internationalization. Miscellaneous Various TWAPI ancillary commands. Printers Printer management. Examples Tcl Windows API usage examples. Version History Tcl Windows API extension version history.
Script.NET中使用TWAPI扩展包写了一个系统工具,可以查看Windows系统的进程、服务、端口信息,界面和代码如下。
#################################################################
# Script.NET 系统工具页面脚本
# 作者:blueant
# 版本:2.0
# 日期:2006-08-25
#################################################################
package require TclFace
package require twapi
#-------------------------------------------------------------
# TLFAppPage class define
#-------------------------------------------------------------
class TLFAppPage {
inherit TLFPage
constructor {} {};
### data member ###
protected
variable _objTextInfo;
protected
variable _tableInfo;
protected
variable _pageType; # 页面类型
protected
variable _svcName; # 当前服务名
### public methods ###
public
method ProcessFormValue {name value}; # 处理Form结果
public
method OnCreate {}; # 创建页面
public
method OnInitialUpdate {}; # 页面初始化
public
method OnEndAction {}; # 动作执行完后的操作
public
method OnServiceStart {}; # 启动服务
public
method OnServiceStop {}; # 停止服务
}
#-------------------------------------------------------------
# 单元构造函数
#-------------------------------------------------------------
body TLFAppPage::constructor {} {
chain;
SetFormAction;
set _pageType
"";
set _svcName
"";
}
#-------------------------------------------------------------
# 处理Form结果
#-------------------------------------------------------------
body TLFAppPage::ProcessFormValue {name value} {
if {[chain $name $value] == true} {
return true
}
switch $name {
page {set _pageType $value}
svc {set _svcName $value}
}
}
#-------------------------------------------------------------
# 创建页面
#-------------------------------------------------------------
body TLFAppPage::OnCreate {} {
set _objTextInfo [AppendText
""]
$_objTextInfo SetColor #800000
set _tableInfo [CreateObject TLFTable]
}
#-------------------------------------------------------------
# 页面初始化
#-------------------------------------------------------------
body TLFAppPage::OnInitialUpdate {} {
}
#-------------------------------------------------------------
# 动作执行完后的操作
#-------------------------------------------------------------
body TLFAppPage::OnEndAction {} {
if {$_pageType == ""} {
set _pageType
"process"
}
# 页面选择
LangStringEC STR_PAGE(process) "Processes"
"进程"
LangStringEC STR_PAGE(service) "Services"
"服务"
LangStringEC STR_PAGE(connection) "Network Connections"
"网络连接"
set lsText {}
foreach page {process service connection} {
if {$page == $_pageType} {
lappend lsText $STR_PAGE($page)
} else {
lappend lsText
"<a href='tcl:<file>[info script]?page=$page'>$STR_PAGE($page)</a>"
}
}
$_objTextInfo SetText
"<b>[join $lsText " | "]</b>"
# 进程列表
if {$_pageType == "process"} {
LangStringEC STR_INFO
"PID"
"进程ID"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Name"
"进程名"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"User"
"用户名"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Path"
"进程路径"
$_tableInfo AddColumn $STR_INFO
set lsPID [lsort -integer [twapi::get_process_ids]]
foreach PID $lsPID {
set lsInfo [twapi::get_process_info $PID -name -path -user]
$_tableInfo AddLine2 [list $PID] [list [lindex $lsInfo
1]] /
[list [lindex $lsInfo
5]] [list [lindex $lsInfo
3]]
}
}
# 服务列表
if {$_pageType == "service"} {
LangStringEC STR_INFO
"PID"
"进程ID"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Name"
"服务名"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"State"
"状态"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Description"
"进程描述"
$_tableInfo AddColumn $STR_INFO
set lsService [twapi::get_multiple_service_status -win32_own_process -win32_share_process]
set index
0
foreach svc $lsService {
set svcName [twapi::kl_get $svc name]
set svcPid [lindex [twapi::get_service_status $svcName] 17]
set svcDispName [twapi::kl_get $svc displayname]
set svcState [twapi::kl_get $svc state]
set svcStateText $svcState
switch $svcState {
running {set svcStateText
"$svcState <a title='stop service' href='tcl:<file>[info script]?page=$_pageType&svc=$svcName&action=OnServiceStop'><img src='image/del.gif' border=0></a>"}
stopped {set svcStateText
"$svcState <a title='start service' href='tcl:<file>[info script]?page=$_pageType&svc=$svcName&action=OnServiceStart'><img src='image/this.gif' border=0></a>"}
}
set svcCommand [lindex [twapi::get_service_configuration $svcName -command] 1]
if {$svcPid == 0} {set svcPid
""}
$_tableInfo AddLine2 [list $svcPid] /
[list
"<a href='#javascript:return false;' title='$svcCommand'>$svcDispName</a>"] /
[list $svcStateText] /
[list [lindex [twapi::get_service_configuration $svcName -description] 1]]
# 如果服务在运行,设置行的特殊颜色
if {$svcState == "running"} {
$_tableInfo SetOneLineStyle $index #ffffd8 #000080
}
incr index
}
}
# 网络连接列表
if {$_pageType == "connection"} {
LangStringEC STR_INFO
"Protocal"
"协议"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"State"
"状态"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Process"
"进程"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Remote Host"
"远程主机"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Remote Port"
"远程端口"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Local Host"
"本地主机"
$_tableInfo AddColumn $STR_INFO
LangStringEC STR_INFO
"Local Port"
"本地端口"
$_tableInfo AddColumn $STR_INFO
foreach conn [twapi::get_tcp_connections] {
set connState [twapi::kl_get $conn -state]
$_tableInfo AddLine2 [list
"TCP"] /
[list $connState] /
[list [twapi::get_process_name [twapi::kl_get $conn -pid]]] /
[list [twapi::kl_get $conn -remoteaddr]] /
[list [twapi::kl_get $conn -remoteport]] /
[list [twapi::kl_get $conn -localaddr]] /
[list [twapi::kl_get $conn -localport]]
}
foreach conn [twapi::get_udp_connections] {
$_tableInfo AddLine2 [list
"UDP"] /
[list
""] /
[list [twapi::get_process_name [twapi::kl_get $conn -pid]]] /
[list
"*"] /
[list
"*"] /
[list [twapi::kl_get $conn -localaddr]] /
[list [twapi::kl_get $conn -localport]]
}
}
CreateObject TLFVariable
"page" $_pageType
}
#-------------------------------------------------------------
# 启动服务
#-------------------------------------------------------------
body TLFAppPage::OnServiceStart {} {
twapi::start_service $_svcName -wait
10000
}
#-------------------------------------------------------------
# 停止服务
#-------------------------------------------------------------
body TLFAppPage::OnServiceStop {} {
twapi::stop_service $_svcName -wait
10000
}
#-------------------------------------------------------------
# main
#-------------------------------------------------------------
LangString STR_PAGE_TITLE chinese
"操作系统工具"
LangString STR_PAGE_TITLE english
"Windows System Tool"
set page [TLFCreatePage $STR_PAGE_TITLE TLFAppPage]
delete object $page;
- Windows API的Tcl扩展包TWAPI介绍
- tcl加载tcom扩展包的一个实例
- ns2脚本语言Tcl的扩展语言Otcl简单介绍<2>
- windows下的python扩展包
- windows下python3扩展包的配置
- python windows扩展包
- Rdis客户端开发API包的介绍
- 使用Tcl扩展包cwind进行界面自动化测试
- 使用Tcl扩展包cwind进行界面自动化测试
- Tcl脚本使用tcom扩展包操作Excel文件
- 转--dingo/api扩展包
- tcl介绍
- Windows关于操作注册表的API介绍
- SamSung(三星)系列的J2ME扩展API介绍
- R语言关联规则可视化:扩展包arulesViz的介绍
- Windows API 介绍
- python扩展包的非官方windows二进制文件 大全
- windows下的python扩展包安装管理
- Security Tutorials系列文章第八章:Storing Additional User Information
- 我失恋了,网络是个好东西
- Anders Hejlsberg
- css的内联对象与块级对象
- vector中的erase方法跟algorithm的remove有什么区别?
- Windows API的Tcl扩展包TWAPI介绍
- Reporting Services 2005 for the DBA – Reporting Services Encryption 2 of 2
- WORD 或者 Outlook 提示“无法创建工作文件,请检查临时环境变量” 的解决方法
- 女人【孫中山詩詠女人】【转】
- 火星贴---51首电视台使用频率最高经典背景音乐
- 存储过程,job总结
- 去掉IE的滚动条
- Net Framework 3.5 新增功能学习工具包下载
- 最难的事