API Documentation:
# password_vault.py
from winsdk.windows.security.credentials import PasswordCredential, PasswordVault
def save_credential_to_resource(resource: str, username: str, password: str) -> None:
vault = PasswordVault()
cred = PasswordCredential(resource, username, password)
vault.add(cred)
def get_credential_from_resource(resource: str) -> PasswordCredential:
vault = PasswordVault()
try:
creds = vault.find_all_by_resource(resource)
return creds
except OSError as ex:
print(f"Could not find any resource for {resource}")
if __name__ == "__main__":
vault_resource = "WinSDK Sample"
save_credential_to_resource(vault_resource, "dummy_username", "dummy_password")
save_credential_to_resource(vault_resource, "dummy_username2", "dummy_password2")
creds = get_credential_from_resource(vault_resource)
if creds is not None:
for cred in creds:
print(f"Username: {cred.user_name}")
print(f"Password: {PasswordVault().retrieve(vault_resource, cred.user_name).password}")
$ python password_vault.py
Username: dummy_username2
Password: dummy_password2
Username: dummy_username
Password: dummy_password
API Documentation:
# pdf.py
import asyncio
from pathlib import Path
from typing import Optional
from winsdk.windows.data.pdf import PdfDocument
from winsdk.windows.storage import StorageFile
async def load_pdf(file: Path, password: Optional[str] = None) -> PdfDocument:
pdf_file = await StorageFile.get_file_from_path_async(str(file))
if password is not None:
document = await PdfDocument.load_from_file_async(pdf_file, password)
else:
document = await PdfDocument.load_from_file_async(pdf_file)
return document
if __name__ == "__main__":
file = Path(input("Provide the pdf file path: ").strip())
if not file.exists():
raise FileNotFoundError(f"{str(file)} does not exist!")
document = asyncio.run(load_pdf(file))
print(f"{file} contains {document.page_count} pages.")
$ python pdf.py
Provide the pdf file path: somefile.pdf
somefile.pdf contains 5 pages.
API Documentation:
# rss.py
import asyncio
from winsdk.windows.foundation import Uri
from winsdk.windows.web.syndication import SyndicationClient, SyndicationFeed
async def get_feed(uri: Uri) -> SyndicationFeed:
client = SyndicationClient()
feed = await client.retrieve_feed_async(uri)
return feed
if __name__ == "__main__":
uri = Uri("https://blogs.windows.com/feed")
result = asyncio.run(get_feed(uri))
for item in result.items:
print(item.title.text)
$ python rss.py
Block Friday Sale begins on Minecraft Marketplace
Announcing Windows 11 Insider Preview Build 25247
Releasing Windows 11 Build 22621.898 to the Release Preview Channel
Update to Windows Subsystem for Android™ on Windows 11 (November 2022)
Soccer Celebration now available at the Minecraft Marketplace
If you’re holiday shopping for Windows 11 PCs, check out these laptops
Save big on tech gifts with Microsoft Store’s Black Friday sale
Snapdragon powers new AI experiences on Windows 11, introduces new AR platform
RedBit builds custom solutions with Windows 11, Microsoft 365 and more
NVIDIA makes it easier to learn AI skills with resources now on Windows 11 PCs
API Documentation:
# xml.py
from winsdk.windows.data.xml.dom import XmlDocument
if __name__ == "__main__":
xml = """<html>Hello world</html>"""
doc = XmlDocument()
doc.load_xml(xml)
root = doc.document_element
assert root.node_name == "html"
print(root.inner_text)
$ python xml.py
Hello world
API Documentation:
- WiFiAdapter
- WiFiAvailableNetwork
- WiFiConnectionStatus
- WiFiPhyKind
- WiFiReconnectionKind
- WiFiNetworkKind
- NetworkAuthenticationType
- NetworkEncryptionType
- PasswordCredential
# wifi.py
import asyncio
from typing import Iterable, Optional
from winsdk.windows.devices.wifi import (
WiFiAdapter,
WiFiAvailableNetwork,
WiFiConnectionStatus,
WiFiPhyKind,
WiFiReconnectionKind,
WiFiNetworkKind
)
from winsdk.windows.networking.connectivity import (
NetworkAuthenticationType,
NetworkEncryptionType,
)
from winsdk.windows.security.credentials import PasswordCredential
def log_network_details(network: WiFiAvailableNetwork) -> None:
print(f"SSID: {network.ssid}")
print(f"MAC address: {network.bssid}")
print(f"Frequency: {network.channel_center_frequency_in_kilohertz} kHz")
print(f"RSSI: {network.network_rssi_in_decibel_milliwatts} dBm (lower is better)")
# TODO: Need to update below three print statement, once issue #1 in pywinrt is closed
print(
f"Authentication: {NetworkAuthenticationType(network.security_settings.network_authentication_type).name}"
)
print(
f"Encryption: {NetworkEncryptionType(network.security_settings.network_encryption_type).name}"
)
print(f"PHY: {WiFiPhyKind(network.phy_kind).name}")
print(f"WiFi Kind: {WiFiNetworkKind(network.network_kind).name}")
print(f"Signal: {network.signal_bars} bars (higher is better)")
print(f"Uptime: {network.uptime.duration}")
async def get_wifi_networks() -> Iterable[WiFiAvailableNetwork]:
wifi_networks = []
wifi_adapters = await WiFiAdapter.find_all_adapters_async()
for wifi_adapter in wifi_adapters:
await wifi_adapter.scan_async()
for network in wifi_adapter.network_report.available_networks:
wifi_networks.append(network)
return wifi_networks
async def get_connected_wifi_network() -> Optional[WiFiAvailableNetwork]:
wifi_adapters = await WiFiAdapter.find_all_adapters_async()
connected_ssid = None
for wifi_adapter in wifi_adapters:
connected_profile = (
await wifi_adapter.network_adapter.get_connected_profile_async()
)
if (
connected_profile is not None
and connected_profile.is_wlan_connection_profile
and connected_profile.wlan_connection_profile_details is not None
):
connected_ssid = (
connected_profile.wlan_connection_profile_details.get_connected_ssid()
)
await wifi_adapter.scan_async()
for network in wifi_adapter.network_report.available_networks:
if network.ssid == connected_ssid:
return network
return None
async def connect_to_network(
ssid: str,
password: str = "",
reconnection_type: WiFiReconnectionKind = WiFiReconnectionKind.MANUAL,
) -> bool:
wifi_adapters = await WiFiAdapter.find_all_adapters_async()
for wifi_adapter in wifi_adapters:
await wifi_adapter.scan_async()
for network in wifi_adapter.network_report.available_networks:
if network.ssid == ssid:
if (
network.security_settings.network_authentication_type
== NetworkAuthenticationType.OPEN80211
and network.security_settings.network_encryption_type
== NetworkEncryptionType.NONE
):
result = await wifi_adapter.connect_async(
network, reconnection_type
)
else:
credential = PasswordCredential()
if password:
credential.password = password
result = await wifi_adapter.connect_async(
network,
reconnection_type,
credential,
)
if result.connection_status == WiFiConnectionStatus.SUCCESS:
print(f"Successfully connected to {network.ssid}.")
return True
else:
print(
# TODO: Need to update once issue #1 in pywinrt is closed
f"Could not connect to {network.ssid}. Error: {WiFiConnectionStatus(result.connection_status).name}."
)
return False
print(f"Could not find network with SSID: {ssid}!")
return False
if __name__ == "__main__":
# Scan example
wifi_networks = asyncio.run(get_wifi_networks())
for network in wifi_networks:
print("=" * 30)
log_network_details(network)
# Connect example
# Replace with correct network ssid and password
is_connected = asyncio.run(connect_to_network("network_ssid", "network_password"))
# Scan connected example
connected_network = asyncio.run(get_connected_wifi_network())
if connected_network is not None:
print("=" * 30)
print("Connected WiFi Network:")
log_network_details(connected_network)