home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2463 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  2.1 KB  |  52 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import win32api
  5. import win32pipe
  6. import win32file
  7. import win32process
  8. import win32security
  9. import win32con
  10. import msvcrt
  11. import os
  12.  
  13. class Process:
  14.     
  15.     def run(self, cmdline):
  16.         sAttrs = win32security.SECURITY_ATTRIBUTES()
  17.         sAttrs.bInheritHandle = 1
  18.         (hStdin_r, self.hStdin_w) = win32pipe.CreatePipe(sAttrs, 0)
  19.         (self.hStdout_r, hStdout_w) = win32pipe.CreatePipe(sAttrs, 0)
  20.         (self.hStderr_r, hStderr_w) = win32pipe.CreatePipe(sAttrs, 0)
  21.         StartupInfo = win32process.STARTUPINFO()
  22.         StartupInfo.hStdInput = hStdin_r
  23.         StartupInfo.hStdOutput = hStdout_w
  24.         StartupInfo.hStdError = hStderr_w
  25.         StartupInfo.dwFlags = win32process.STARTF_USESTDHANDLES
  26.         pid = win32api.GetCurrentProcess()
  27.         tmp = win32api.DuplicateHandle(pid, self.hStdin_w, pid, 0, 0, win32con.DUPLICATE_SAME_ACCESS)
  28.         win32file.CloseHandle(self.hStdin_w)
  29.         self.hStdin_w = tmp
  30.         tmp = win32api.DuplicateHandle(pid, self.hStdout_r, pid, 0, 0, win32con.DUPLICATE_SAME_ACCESS)
  31.         win32file.CloseHandle(self.hStdout_r)
  32.         self.hStdout_r = tmp
  33.         (hProcess, hThread, dwPid, dwTid) = win32process.CreateProcess(None, cmdline, None, None, 1, 0, None, None, StartupInfo)
  34.         win32file.CloseHandle(hStderr_w)
  35.         win32file.CloseHandle(hStdout_w)
  36.         win32file.CloseHandle(hStdin_r)
  37.         self.stdin = os.fdopen(msvcrt.open_osfhandle(self.hStdin_w, 0), 'wb')
  38.         self.stdin.write('hmmmmm\r\n')
  39.         self.stdin.flush()
  40.         self.stdin.close()
  41.         self.stdout = os.fdopen(msvcrt.open_osfhandle(self.hStdout_r, 0), 'rb')
  42.         print 'Read on stdout: ', repr(self.stdout.read())
  43.         self.stderr = os.fdopen(msvcrt.open_osfhandle(self.hStderr_r, 0), 'rb')
  44.         print 'Read on stderr: ', repr(self.stderr.read())
  45.  
  46.  
  47. if __name__ == '__main__':
  48.     p = Process()
  49.     exe = win32api.GetModuleFileName(0)
  50.     p.run(exe + ' cat.py')
  51.  
  52.