title: How to hide windows console using python3
body: <p>Try to hide widows console in wifi.py using Windows 10 but I did not succeed. I changed the script extension from wifi.py to wifi.pyw but did not work and I used in my CMD: <code>python pyinstaller --onefile --noconsole wifi.py</code> but still window console appear.
  I also using ctypes library to hide the windows console but still console appear!</p>
  <p>import ctypes
  ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 0 )</p>
  <pre><code>######################################
  #Copyright of David Bombal, 2021     #
  #https://www.davidbombal.com         #
  #https://www.youtube.com/davidbombal #
  ######################################
  
  #Import subprocess so we can use system commands.
  import subprocess
  
  #Import the re module so we can make use of regular expressions. 
  import re
  
  import platform
  import os.path #used to check if text.txt exists
  from os import path
  
  from requests import get
  import shutil
  
  import win32gui, win32con
  import ctypes
  ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 0 )
  
  dir_name = &quot;Wifi_Recover_Password&quot;
  dir_path = os.path.expanduser(&quot;~/Desktop&quot;)
  file_path = os.path.join(dir_path, dir_name)
  
  if not os.path.exists(file_path):
          os.mkdir(file_path)
          #print(file_path)
  
  
  #wifi = win32gui.GetForegroundWindow()
  #win32gui.ShowWindow(wifi , win32con.SW_HIDE)
  
  
  
  #    Python allows us to run system commands using the function 
  #    provided by the subprocess module; 
  #    (subprocess.run(&lt;list of command line arguments go here&gt;, &lt;specify the second argument if you want to capture the output&gt;)).
  #
  #    This script is a parent process that creates a child process which 
  #    runs a system command and will only continue once the child process 
  #    is completed. 
  #
  #    To save the contents that get sent to the standard output stream 
  #    (the terminal), we must first specify that we want to capture the output.
  #    To do this we specify the second argument as capture_output = True. 
  #    This information gets stored in the stdout attribute as bytes and 
  #    needs to be decoded before being used as a String in Python.
  command_output = subprocess.run([&quot;netsh&quot;, &quot;wlan&quot;, &quot;show&quot;, &quot;profiles&quot;],stdin=subprocess.DEVNULL, capture_output = True).stdout.decode()
  
  #    We imported the re module to make use of regular expressions. 
  #    We want to find all the wifi names which are listed after 
  #    &quot;ALL User Profile     :&quot;. Using regular expressions we can create 
  #    a group of all characters until the return escape sequence (\r) appears.
  profile_names = (re.findall(&quot;All User Profile     : (.*)\r&quot;, command_output))
  
  #    We create an empty list outside of the loop where dictionaries 
  #    containing all the wifi usernames and passwords will be saved.
  wifi_list = []
  
  #    If any profile names are not found this means that wifi connections 
  #    have also not been found. So we run this part to check the 
  #    details of the wifi and see whether we can get their passwords.
  if len(profile_names) != 0:
      for name in profile_names:
          #    Every wifi connection will need its own dictionary which 
          #    will be appended to the variable wifi_list.
          wifi_profile = {}
          #    We can now run a more specific command to see the information 
          #    about the wifi connection and if the Security key
          #    is not absent it may be possible to get the password.
          profile_info = subprocess.run([&quot;netsh&quot;, &quot;wlan&quot;, &quot;show&quot;, &quot;profile&quot;, name], stdin=subprocess.DEVNULL, capture_output = True).stdout.decode()
          #    We use the regular expression to only look for the absent cases so we can ignore them.
          if re.search(&quot;Security key           : Absent&quot;, profile_info):
              continue
          else:
              #    Assign the ssid of the wifi profile to the dictionary.
              wifi_profile[&quot;ssid&quot;] = name
              #    These cases aren't absent and we should run the 
              #    &quot;key=clear&quot; command part to get the password.
              profile_info_pass = subprocess.run([&quot;netsh&quot;, &quot;wlan&quot;, &quot;show&quot;, &quot;profile&quot;, name, &quot;key=clear&quot;],stdin=subprocess.DEVNULL, capture_output = True).stdout.decode()
              #    Again run the regular expression to capture the 
              #    group after the : (which is the password).
              password = re.search(&quot;Key Content            : (.*)\r&quot;, profile_info_pass)
              #    Check if we found a password using the regular expression. 
              #    Some wifi connections may not have passwords.
              if password == None:
                  wifi_profile[&quot;password&quot;] = None
              else:
                  #    We assign the grouping (where the password is contained) that 
                  #    we are interested in to the password key in the dictionary.
                  wifi_profile[&quot;password&quot;] = password[1]
              #    We append the wifi information to the variable wifi_list.
              wifi_list.append(wifi_profile) 
  
  
          
  with open (os.path.join(file_path, &quot;Wifi_Passwords.txt&quot;), &quot;w&quot;) as f:
          for x in range(len(wifi_list)):
                  #print(wifi_list[x])
                  f.write(&quot;======================== Recover Wifi Passwords ============================&quot;+ '\n')
                  f.write(str(wifi_list[x])+ '\n')
                  
      
  </code></pre>