⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch15_18.htm

📁 By Tom Christiansen and Nathan Torkington ISBN 1-56592-243-3 First Edition, published August 1998
💻 HTM
字号:
<HTML><HEAD><TITLE>Recipe 15.17. Removing the DOS Shell Window with Windows Perl/Tk (Perl Cookbook)</TITLE><METANAME="DC.title"CONTENT="Perl Cookbook"><METANAME="DC.creator"CONTENT="Tom Christiansen &amp; Nathan Torkington"><METANAME="DC.publisher"CONTENT="O'Reilly &amp; Associates, Inc."><METANAME="DC.date"CONTENT="1999-07-02T01:43:31Z"><METANAME="DC.type"CONTENT="Text.Monograph"><METANAME="DC.format"CONTENT="text/html"SCHEME="MIME"><METANAME="DC.source"CONTENT="1-56592-243-3"SCHEME="ISBN"><METANAME="DC.language"CONTENT="en-US"><METANAME="generator"CONTENT="Jade 1.1/O'Reilly DocBook 3.0 to HTML 4.0"><LINKREV="made"HREF="mailto:online-books@oreilly.com"TITLE="Online Books Comments"><LINKREL="up"HREF="ch15_01.htm"TITLE="15. User Interfaces"><LINKREL="prev"HREF="ch15_17.htm"TITLE="15.16. Responding to Tk Resize Events"><LINKREL="next"HREF="ch15_19.htm"TITLE="15.18. Program: Small termcap program"></HEAD><BODYBGCOLOR="#FFFFFF"><img alt="Book Home" border="0" src="gifs/smbanner.gif" usemap="#banner-map" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Perl Cookbook"><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><p><TABLEWIDTH="684"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch15_17.htm"TITLE="15.16. Responding to Tk Resize Events"><IMGSRC="../gifs/txtpreva.gif"ALT="Previous: 15.16. Responding to Tk Resize Events"BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="228"><B><FONTFACE="ARIEL,HELVETICA,HELV,SANSERIF"SIZE="-1"><ACLASS="chapter"REL="up"HREF="ch15_01.htm"TITLE="15. User Interfaces"></A></FONT></B></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch15_19.htm"TITLE="15.18. Program: Small termcap program"><IMGSRC="../gifs/txtnexta.gif"ALT="Next: 15.18. Program: Small termcap program"BORDER="0"></A></TD></TR></TABLE></DIV><DIVCLASS="sect1"><H2CLASS="sect1"><ACLASS="title"NAME="ch15-chap15_removing_0">15.17. Removing the DOS Shell Window with Windows Perl/Tk</A></H2><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch15-pgfId-1933">Problem<ACLASS="indexterm"NAME="ch15-idx-1000005204-0"></A><ACLASS="indexterm"NAME="ch15-idx-1000005204-1"></A><ACLASS="indexterm"NAME="ch15-idx-1000005204-2"></A><ACLASS="indexterm"NAME="ch15-idx-1000005204-3"></A><ACLASS="indexterm"NAME="ch15-idx-1000005204-4"></A></A></H3><PCLASS="para">You have written a Perl program for the Windows port of Perl and Tk, but you get a DOS shell window every time you start your program.</P></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch15-pgfId-1939">Solution</A></H3><PCLASS="para">Start your program through another Perl script. The Perl script in <ACLASS="xref"HREF="ch15_18.htm#ch15-25256"TITLE="loader">Example 15.8</A> is a loader that starts <EMCLASS="emphasis">realprogram</EM> without the DOS window.</P><DIVCLASS="example"><H4CLASS="example"><ACLASS="title"NAME="ch15-25256">Example 15.8: loader</A></H4><PRECLASS="programlisting">#!/usr/bin/perl -w# <ACLASS="indexterm"NAME="ch15-idx-1000005012-0"></A>loader - starts Perl scripts without the annoying DOS windowuse strict;use Win32;use Win32::Process;# Create the process object.Win32::Process::Create($Win32::Process::Create::ProcessObj,    'C:/perl5/bin/perl.exe',            # Whereabouts of Perl    'perl realprogram',                 #    0,                                  # Don't inherit.    DETACHED_PROCESS,                   #    &quot;.&quot;) or                             # current dir.die print_error();sub print_error() {    return Win32::FormatMessage( Win32::GetLastError() );}</PRE></DIV></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch15-pgfId-1983">Description</A></H3><PCLASS="para">This program isn't as cryptic as it looks. You get the DOS box because your Perl binary was compiled as a console application. It needs a DOS window open to read STDIN and write STDOUT. This is fine for command-line applications, but there's no need for it if you're using Tk for all your user interaction.</P><PCLASS="para">This loader uses the <ACLASS="indexterm"NAME="ch15-idx-1000005205-0"></A>Win32::Process module to run the real program in a new process. The process is detached from the current one, so when the loader ends, its DOS window will go away. Your real program will continue on in glorious freedom without the shackles of the past.</P><PCLASS="para">Should trouble strike and your real program not load, the loader dies with the Windows error message.</P></DIV><DIVCLASS="sect2"><H3CLASS="sect2"><ACLASS="title"NAME="ch15-pgfId-1993">See Also</A></H3><PCLASS="para">The documentation for the Win32::Process module, which is included with distributions of Perl destined for Microsoft systems</P></DIV></DIV><DIVCLASS="htmlnav"><P></P><HRALIGN="LEFT"WIDTH="684"TITLE="footer"><TABLEWIDTH="684"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch15_17.htm"TITLE="15.16. Responding to Tk Resize Events"><IMGSRC="../gifs/txtpreva.gif"ALT="Previous: 15.16. Responding to Tk Resize Events"BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="228"><ACLASS="book"HREF="index.htm"TITLE="Perl Cookbook"><IMGSRC="../gifs/txthome.gif"ALT="Perl Cookbook"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="228"><ACLASS="sect1"HREF="ch15_19.htm"TITLE="15.18. Program: Small termcap program"><IMGSRC="../gifs/txtnexta.gif"ALT="Next: 15.18. Program: Small termcap program"BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="228">15.16. Responding to Tk Resize Events</TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="228"><ACLASS="index"HREF="index/index.htm"TITLE="Book Index"><IMGSRC="../gifs/index.gif"ALT="Book Index"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="228">15.18. Program: Small termcap program</TD></TR></TABLE><HRALIGN="LEFT"WIDTH="684"TITLE="footer"><FONTSIZE="-1"></DIV<!-- LIBRARY NAV BAR --> <img src="../gifs/smnavbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links"><p> <a href="copyrght.htm">Copyright &copy; 2002</a> O'Reilly &amp; Associates. All rights reserved.</font> </p> <map name="library-map"> <area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map> </BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -