 2012/05/17
|
Last update 1999/02/20
TPJ: Issue_07_Win32
- spawn_server
- pipe_server
- userdb
- spawn_client
- pipe_client
- More Samples on Win32
| Issue_07_Win321. spawn_server
|
Download spawn_server
|
use Win32::Process;
|
|
%Data = (
|
|
one =>1,
|
|
two =>2,
|
|
three =>3
|
|
);
|
|
pipe(READ, WRITE);
|
|
select(WRITE);
|
|
$| = 1;
|
|
select(STDOUT);
|
|
open(SAVEIN, "< &STDIN") || die "Can not save STDIN\n";
|
|
open(STDIN, "< &READ") || die "Can not redirect STDIN\n";
|
|
select(STDIN);
|
|
$| = 1;
|
|
select(STDOUT);
|
|
Win32::Process::Create($Proces,
|
|
c:\\perl\\bin\\perl.exe",
|
|
"c:\\perl\\bin\\perl.exe
|
|
c:\\perl\\test\\client.pl",
|
|
1,
|
|
NORMAL_PRIORITY_CLASS,
|
|
"c:\\perl\\test");
|
|
open(STDIN, "< &SAVEIN");
|
|
close(SAVEIN);
|
|
close(READ);
|
|
print "$0: Sending variables to child...\n";
|
|
foreach $Temp (keys(%Data)){
|
|
print "$0:\t$Temp=$Data{$Temp}\n";
|
|
print WRITE "\$Data{$Temp}=$Data{$Temp};\n";
|
|
}
|
|
print "$0: Finished sending variables.\n";
|
|
close(WRITE);
|
|
print "$0: About to terminate. Waiting for <RETURN> to be hit...\
|
|
\n";
|
|
<STDIN>;
|
|
print "$0: End.\n";
|
| Issue_07_Win322. pipe_server
|
Download pipe_server
|
use Win32::Pipe;
|
|
$Pipe = new Win32::Pipe("My_Pipe");
|
|
$Pipe->Connect();
|
|
$Pipe->Write("Hello client, from $0");
|
|
$Pipe->Close();
|
Download userdb
|
# From Dave Roth's Perl for Win32 article in issue #7 of The Perl Jour\
|
|
nal.
|
|
# This is *not* a standalone script! See the article for how to use t\
|
|
hese.
|
|
|
|
sub CheckMembership{
|
|
my($Domain, $User, $Group) = @_;
|
|
return (Win32::NetAdmin::GroupIsMember($Domain, $Group, $User) || \
|
|
Win32::NetAdmin::LocalGroupIsMember($Domain, $Group, $User));
|
|
}
|
|
open(FILE, "< users.txt") || die "Could not open ($!)";
|
|
@Users = <FILE>;
|
|
close(FILE);
|
|
foreach $Data (@Users){
|
|
chop $Data;
|
|
($Domain, $User, $Password, $HomeDir, $Password, $Comment) = split\
|
|
("\t", @Users);
|
|
Win32::NetAdmin::UserCreate(
|
|
$Domain, # Domain
|
|
$User, # Userid
|
|
$Password, # Password
|
|
$PasswordAge, # Passwor\
|
|
d Age
|
|
USER_PRIV_USER, # Privileges
|
|
$HomeDir, # Home director\
|
|
y
|
|
$Comment, # Comment
|
|
UF_NORMAL_ACCOUNT | UF_SCRIPT, # \
|
|
Flags
|
|
"c:\\scripts\\$User.bat") # Logo\
|
|
n script
|
|
|| print "$User was not added.\n";
|
|
}
|
| Issue_07_Win324. spawn_client
|
Download spawn_client
|
print "$0: Starting.\n";
|
|
print "$0: Reading in variables...\n";
|
|
while(<STDIN>){
|
|
eval($_);
|
|
print "$0: \t$_";
|
|
}
|
|
print "$0: Finished reading variables.\n";
|
|
print "$0: Dumping variables...\n";
|
|
foreach $Temp (keys(%Data)){
|
|
print "$0:\t$Temp=$Data{$Temp}\n";
|
|
}
|
|
print "$0: End.\n";
|
| Issue_07_Win325. pipe_client
|
Download pipe_client
|
open(CLIENT, "< //./pipe/My_Pipe") || die;
|
|
$Data = <CLIENT>;
|
|
print "$Data\n";
|
|
close(CLIENT);
|
| Issue_07_Win326. More Samples on Win32
|

Hipocrisy of the finest: "I agree that no single company can create all the hardware and software. Openness is central because it's the foundation of choice." -- Steve Balmer (Microsoft) blaming Apple regarding iPhone, February 18, 2009Last update 1999/02/20 
All Rights Reserved - (C) 1997 - 2009 by The Labs.Com |