(view source code of airreggui.ps as plain text)
<#.SYNOPSISSearch for aircraft photos on Airport-data.com by the aircraft's registration number.DESCRIPTIONThis simple GUI script allows you to enter an aircraft registration and then search Airport-data.com for photos and specifications of that aircraft.Interactive usage: enter an aircraft registration in the input texbox and press Enter or click the Search button to search Airport-data.com's website for photos and detailed specifications.Command line usage: run this script with -Help parameter to view its command line syntax..NOTESDashes are mandatory in many aircraft registrations, but not all, e.g. PH-PBY and N1944S will work, but PHPBY and N-1944S won't.Invalid command line switches starting with a dash will trigger a PowerShell error message.All command line switches starting with a slash will trigger this script's help screen.This script can be extended by using downloaded local aircraft registration databases; see this script's web page (see links section) for details.Return code ("ErrorLevel") is 1 in case of errors, otherwise 0..PARAMETER AircraftRegistration(optional) A valid aircraft registration, e.g. PH-PBY or N1944S or OK-NUL.Aircraft registration may be entered in the GUI if not specified on the command line..PARAMETER SearchEngine(optional) Alternative search engine if no match was found on Airport-data.com.Valid SearchEngine values are 'DuckDuckGo', 'Google' (default) or 'StartPage'.Useful only if local database extension scripts are installed.Command line only, cannot be changed interactively in the GUI..PARAMETER HideHides the console window (GUI remains visible).Command line only, cannot be changed interactively in the GUI..PARAMETER DebugShows some progress messages, especially usefull when using local databases.Command line only, cannot be changed interactively in the GUI..PARAMETER VersionShow this script's version number.If combined with -Verbose show full script path, version number and last/modified/release date..PARAMETER HelpShows this script's help screen, with more details than the Help button's help text..EXAMPLEpowershell . ./AirRegGUI.ps1Will open the GUI with empty input textbox, the console remains visible.EXAMPLEpowershell . ./AirRegGUI.ps1 -HideWill open the GUI with empty input textbox and hide the console.EXAMPLEpowershell . ./AirRegGUI.ps1 N1944SWill open the GUI with N1944S in input textbox, and start search immediately, the console remains visible.EXAMPLEpowershell . ./AirRegGUI.ps1 -AircraftRegistration N1944SWill open the GUI with N1944S in input textbox, and start search immediately, the console remains visible.EXAMPLEpowershell . ./AirRegGUI.ps1 PH-PBY -HideWill open the GUI with PH-PBY in input textbox, start search immediately, and hide the console.EXAMPLEpowershell . ./AirRegGUI.ps1 -AircraftRegistration PH-PBY -HideWill open the GUI with PH-PBY in input textbox, start search immediately, and hide the console.LINKScript written by Rob van der Woude:https://www.robvanderwoude.com/airreg.php.LINKAirport-data API courtesy of Airport-data.com:http://www.airport-data.com/api/doc.php.LINKScript created in Visual Studio Community 2019 with a trial version of Ironman Software's PowerShell Pro Tools Suite:https://ironmansoftware.com/powershell-pro-tools/.LINKCapturing Enter key (as a work-around for the form's AcceptButton not working as expected) by sodawillow on StackOverflow.com:https://stackoverflow.com/a/41441704.LINKCode to hide console window by Anthony on StackOverflow.com:http://stackoverflow.com/a/15079092.LINKUse of Shown event (to make sure the GUI is visible before starting an optional immediate search) by Matthias Schippling on StackOverflow.com:https://stackoverflow.com/a/219155.LINKCapture -Debug and -Verbose parameter by mklement0 on StackOverflow.com:https://stackoverflow.com/a/48643616.LINKEmbedded icon based on code by Theo on StackOverflow.com:https://stackoverflow.com/a/53377253.LINKAirplane icon image courtesy of Icons8.com:https://icons8.com/#>param (
[parameter( ValueFromPipeline )]
[ValidatePattern("(^\s*$|[\?/]|^\w[\w-]{2,3}\w+)")]
[string]$AircraftRegistration = '',
[parameter( ValueFromPipeline )]
[ValidateSet('DuckDuckGo','Google','StartPage')]
[string]$SearchEngine = 'Google',
[switch]$Hide,
[switch]$Help,
[switch]$Version
)$progver = "2.16"
$AircraftRegistration = $AircraftRegistration.ToUpper( )
$Manufacturer = ''
$Model = ''
[bool]$Debug = $Debug -or ( $PSBoundParameters.ContainsKey( 'Debug' ) )
[bool]$Verbose = ( $PSBoundParameters.ContainsKey( 'Verbose' ) )
$global:notfound = $true
if ( $Version ) {
if ( $Verbose ) {
$lastmod = ( [System.IO.File]::GetLastWriteTime( $PSCommandPath ) )
if ( $lastmod.ToString( "h.mm" ) -eq $progver ) {
"`"{0}`", Version {1}, release date {2}" -f $PSCommandPath, $progver, $lastmod.ToString( "yyyy-MM-dd" )
} else {
# if last modified time is not equal to program version, the script has been tampered with"`"{0}`", Version {1}, last modified date {2}" -f $PSCommandPath, $progver, $lastmod.ToString( "yyyy-MM-dd" )
}} else {
$progver } exit 0}if ( $Help -or ( $AircraftRegistration -match "[/\?]" ) ) {
Clear-HostWrite-Host ( "`"{0}`", Version {1}" -f ( "$PSCommandPath" -replace "$PSScriptRoot","" ), $progver ) -NoNewline
$lastmod = ( [System.IO.File]::GetLastWriteTime( $PSCommandPath ) )
if ( $lastmod.ToString( "h.mm" ) -eq $progver ) {
Write-Host ", release date " -NoNewline
} else {
# if last modified time is not equal to program version, the script has been tampered withWrite-Host ", last modified date " -NoNewline
}Write-Host $lastmod.ToString( "yyyy-MM-dd" )
Write-HostGet-Help $PSCommandPath -Full
exit -1
}$global:airportdatalink = ''
$Debug = ( $PSBoundParameters.ContainsKey( 'Debug' ) )
$defaulthelptext = "Enter an aircraft registration number, e.g. `"PH-PBY`" and click the Search button.`n`n" + `
"This script will then search Airport-Data.com for photos of the aircraft with that registration.`n`n" + `
"If found, a thumbnail of the photo will be displayed in this script's window, plus a button to view the photo full size in your default browser.`n`n" + `
"{0} 2022 Rob van der Woude`nhttps://www.robvanderwoude.com" -f [char]0x00A9
# Search query templatesif ( $SearchEngine -match '^DuckDuckGo$' ) {
$SearchEngine = 'DuckDuckGo'
$searchtemplate = "https://duckduckgo.com/html/?q=x{0}"
} elseif ( $SearchEngine -match '^Google$' ) {
$SearchEngine = 'Google'
$searchtemplate = "https://www.google.com/search?q={0}"
} elseif ( $SearchEngine -match '^Startpage$' ) {
$SearchEngine = 'StartPage'
$searchtemplate = "https://startpage.com/do/search?cat=web&cmd=process_search&language=english&engine0=v1all&query={0}"
} else {
if ( -not $Quiet ) {
Write-Host ( "Invalid -SearchEngine value `"{0}`", using Google instead" -f $SearchEngine )
}$SearchEngine = 'Google'
$searchtemplate = "https://www.google.com/search?q={0}" # Google by default
}if ( $Debug ) {
Write-Host ( "Search Engine: {0}" -f $SearchEngine )
Write-Host ( "Search template: {0}" -f $searchtemplate )
}######################################## Hide console window ## by Anthony on StackOverflow.com ## http://stackoverflow.com/a/15079092 ########################################$signature1 = @'
public static void ShowConsoleWindow( int state ){ var handle = GetConsoleWindow( ); ShowWindow( handle, state );}[System.Runtime.InteropServices.DllImport( "kernel32.dll" )]static extern IntPtr GetConsoleWindow( );[System.Runtime.InteropServices.DllImport( "user32.dll" )]static extern bool ShowWindow( IntPtr hWnd, int nCmdShow );'@
# Hide console if requestedif ( $Hide ) {
$hideconsole = Add-Type -MemberDefinition $signature1 -Name Hide -Namespace HideConsole -ReferencedAssemblies System.Runtime.InteropServices -PassThru
$hideconsole::ShowConsoleWindow( 0 )
}######################## End of Hide console #################################################### Start of Event handlers ############################$ButtonHelp_Click = {
$scriptname = $PSCommandPath.Substring( $PSScriptRoot.Length )
$inserttext = "If local database extensions are installed, a local search will be initiated if no match was found online on Airport-data.com.`n" + `
"Local searches take considerably longer than online searches!`n" + `
"See https://www.robvanderwoude.com/airreg.php for details on local database extensions.`n`n" + `
"For detailed help use the command:`n`n" + `
" . '.{0}' -Help`n`nor:`n`n" -f $scriptname + `
" . '.{0}' /?`n`nor:`n`n" -f $scriptname + `
" Get-Help '.{0}' -Full`n`n" -f $scriptname + `
"Do you want to open this script's web page now?`n`n{1}" -f $scriptname, [char]0x00A9
$helptext = $defaulthelptext -replace [char]0x00A9, $inserttext
$title = "Help for {0}" -f $AirRegGUI.Text
$answer = [System.Windows.Forms.MessageBox]::Show( $helptext, $title, 'YesNo' )
if ( $answer -eq 'Yes' ) {
Start-Process 'https://www.robvanderwoude.com/airreg.php'
}}$ButtonOpenLink_Click = {
Start-Process $global:airportdatalink -WindowStyle 1
}$ButtonSearch_Click = {
Search-Aircraft}$TextboxReg_KeyUp = {
Validate-Input( $_.KeyCode )
}$TextboxReg_TextChanged = {
Validate-Input}$Window_Load = {
$AirRegGUI.Text = "AirRegGUI.ps1 - Version {0}" -f $progver # window title
$LabelHelptext.Text = $defaulthelptext # help text in window
}$Window_Shown = {
if ( ![string]::IsNullOrWhiteSpace( $AircraftRegistration ) ) {
$TextboxReg.Text = $AircraftRegistration # enter specified aircraft registration in input textbox
$TextboxReg.SelectionStart = $TextboxReg.Text.Length # move cursor to end of input text
$TextboxReg.SelectionLength = 0
# Start search immediately[System.Windows.Forms.Application]::DoEvents( ) # start updating GUI
Start-Sleep -Seconds 1 # allow GUI update to complete
Validate-Input( 'Return' )
}}########################## End of Event handlers ##########################function Check-Update( ) {
$ProgressPreference = 'SilentlyContinue'
$checkupdate = ( Invoke-WebRequest -Uri 'https://www.robvanderwoude.com/updates/airreg.txt' -TimeoutSec 10 )
$ProgressPreference = 'Continue'
if ( $checkupdate.StatusCode -eq 200 ) {
$latestversion = [float]$checkupdate.Content
$currentversion = [float]$progver
if ( $latestversion -gt $currentversion ) {
$title = 'Update Available'
$message = ( "An update for this script is available.`nYour current version is {0}, the latest version available is {1}.`n`n" + `
"Do you want to open the download page for the update?" -f ( $currentversion -replace ",","." ), ( $latestversion -replace ",","." ) )
$buttons = [System.Windows.Forms.MessageBoxButtons]::YesNo
if ( [System.Windows.Forms.MessageBox]::Show( $message, $title, $buttons ) -eq 'Yes' ) {
Start-Process 'https://www.robvanderwoude.com/airreg.php'
} } }}function Search-LocalDB( $message = 'Not found' ) {
[OutputType([bool])]
$prefix = ''
$registration = $TextboxReg.Text
$found = $false
if ( $registration.Contains( '-' ) ) {
$prefix = $registration.Split( '-' )[0]
} else {
if ( Test-Path ( "$PSScriptRoot\AirReg{0}Cmd.ps1" -f $registration.Substring( 0, 2 ) ) -PathType 'Leaf' ) {
$prefix = $registration.Substring( 0, 2 )
} elseif ( Test-Path ( "$PSScriptRoot\AirReg{0}Cmd.ps1" -f $registration.Substring( 0, 1 ) ) -PathType 'Leaf' ) {
$prefix = $registration.Substring( 0, 1 )
} else {
$prefix = ''
} }if ( -not [string]::IsNullOrWhiteSpace( $prefix ) ) {
$localDBscript = ( Join-Path -Path $PSScriptRoot -ChildPath ( "AirReg{0}Cmd.ps1" -f $prefix ) )
if ( $Debug ) {
Write-Host ( "Found local '{0}' database file `"{1}`"" -f $prefix, $localDBscript )
}$ButtonOpenLink.Visible = $false
$LabelPhotographer.Visible = $false
$PictureboxThumbnail.Visible = $false
$ButtonOpenLink.Enabled = $false
$LabelHelptext.Text = "Searching local database, this may take a while..."
$LabelHelptext.Visible = $true
[System.Windows.Forms.Application]::DoEvents( ) # update GUI
$Manufacturer = ''
$Model = ''
if ( $Debug ) {
$Stopwatch = [System.Diagnostics.Stopwatch]::StartNew( )
Write-Host ( "Start searching local database at {0}" -f ( Get-Date ) )
if ( ( Get-Content $localDBscript ) -match 'TerminateExcel' ) {
Write-Host ( "Starting extension script `"{0}`" with Arguments {1} -TerminateExcel -Debug at {2}" -f $localDBscript, $registration, $stopwatch.Elapsed )
. "$localDBscript" -Registration $registration -TerminateExcel -Debug
} else {
Write-Host ( "Starting extension script `"{0}`" with Arguments {1} -Debug at {2}" -f $localDBscript, $registration, $stopwatch.Elapsed )
. "$localDBscript" -Registration $registration -Debug
}Write-Host ( "Finished at {0} (time elapsed {1})" -f ( Get-Date ), $Stopwatch.Elapsed )
$Stopwatch.Stop( )
Write-Host ( "Registration = {0}" -f $registration )
Write-Host ( "Manufacturer = {0}" -f $Manufacturer )
Write-Host ( "Model = {0}" -f $Model )
} else {
if ( ( Get-Content "$localDBscript" ) -match 'TerminateExcel' ) {
. "$localDBscript" -Registration $registration -TerminateExcel
} else {
. "$localDBscript" -Registration $registration
} }if ( $Model ) {
if ( $Manufacturer ) {
$LabelHelptext.Text = ( "{0} {1}" -f $Manufacturer, $Model )
$searchquery = ( ( ( "{0} {1} {2}" -f $Manufacturer, $Model, $registration ) -replace " ","+" ) -replace ",","" )
} else {
$LabelHelptext.Text = $Model
$searchquery = ( ( ( "{0} {1}" -f $Model, $registration ) -replace " ","+" ) -replace ",","" )
}$global:airportdatalink = ( $searchtemplate -f $searchquery )
$ButtonOpenLink.Enabled = $true
$ButtonOpenLink.Text = ( 'Search on {0}' -f $SearchEngine )
$ButtonOpenLink.Visible = $true
[System.Windows.Forms.Application]::DoEvents( ) # start updating GUI
Start-Sleep -Seconds 1 # allow GUI update to complete
$found = $true
$global:notfound = $false
} else {
if ( Test-Path -Path "$PSScriptRoot\$prefix" -PathType 'Container' ) {
$local = 'local'
} else {
$local = 'online'
}$message = ( "$message, and not found in {0} {1} database either" -f $local, $prefix )
$LabelHelptext.Text = $message
[System.Windows.Forms.Application]::DoEvents( ) # start updating GUI
Start-Sleep -Seconds 1 # allow GUI update to complete
Search-OpenSky $message
}} else {
$message = ( "$message, no local {0} database found" -f $prefix )
$LabelHelptext.Text = $message
[System.Windows.Forms.Application]::DoEvents( ) # start updating GUI
Start-Sleep -Seconds 1 # allow GUI update to complete
Search-OpenSky $message
} $found}function Search-OpenSky( $message = 'Not found' ) {
[OutputType([bool])]
$registration = $TextboxReg.Text
$found = $false
$openskyscript = ( Join-Path $PSScriptRoot 'AirRegOpenSkyCmd.ps1' )
if ( Test-Path -Path $openskyscript -PathType 'Leaf' ) {
$LabelHelptext.Text = ( "{0}, searching OpenSky database, this may take a minute..." -f $LabelHelptext.Text )
[System.Windows.Forms.Application]::DoEvents( ) # start updating GUI
Start-Sleep -Seconds 1 # allow GUI update to complete
if ( $Debug ) {
Write-Host ( "Found OpenSky extension `"{0}`"" -f $openskyscript )
. "$openskyscript" -Registration $registration -NoBreak -Debug
} else {
. "$openskyscript" -Registration $registration -NoBreak
}if ( $Model ) {
if ( $Manufacturer ) {
$LabelHelptext.Text = ( ( "{0} {1}" -f $Manufacturer, $Model ) -replace "`"","" )
$searchquery = ( ( ( ( "{0} {1} {2}" -f $Manufacturer, $Model, $registration ) -replace " ","+" ) -replace ",","" ) -replace "`"","" )
} else {
$LabelHelptext.Text = $Model
$searchquery = ( ( ( ( "{0} {1}" -f $Model, $registration ) -replace " ","+" ) -replace ",","" ) -replace "`"","" )
}$global:airportdatalink = ( $searchtemplate -f $searchquery )
$ButtonOpenLink.Enabled = $true
$ButtonOpenLink.Text = ( 'Search on {0}' -f $SearchEngine )
$ButtonOpenLink.Visible = $true
$found = $true
$global:notfound = $false
} else {
$LabelHelptext.Text = "$message, nor in OpenSky database"
}} else {
$LabelHelptext.Text = $message
} $global:notfound}function Search-Aircraft( ) {
$url = ( 'http://www.airport-data.com/api/ac_thumb.json?r={0}' -f $TextboxReg.Text )
$ProgressPreference = 'SilentlyContinue'
$json = ( Invoke-WebRequest -Uri $url -TimeoutSec 10 ).Content | ConvertFrom-Json -ErrorAction Stop
$ProgressPreference = 'Continue'
if ( $json.status -eq 200 ) {
$LabelHelptext.Visible = $false
$PictureboxThumbnail.ImageLocation = $json.data.image
$LabelPhotographer.Visible = $true
$LabelPhotographer.Text = ( "Photographer: {0}" -f $json.data.photographer )
$ButtonOpenLink.Enabled = $true
$global:airportdatalink = $json.data.link
$PictureboxThumbnail.Visible = $true
$ButtonOpenLink.Visible = $true
$aircraftdescription = ( ( Invoke-WebRequest -Uri $global:airportdatalink ).Content | Select-String -Pattern ( '{0},[^\",]+' -f $TextboxReg.Text ) )
if ( $aircraftdescription.Matches.Count -gt 0 ) {
$aircrafttype = $aircraftdescription.Matches[0].Value
$aircrafttype = $aircrafttype -replace ( "^{0}, " -f $TextboxReg.Text ), ''
$aircrafttype = $aircrafttype -replace "^[12][0-9][0-9][0-9] ", ''
$aircrafttype = $aircrafttype -replace " C/N.+$", ''
$LabelAircraftType.Visible = $true
$LabelAircraftType.Text = $aircrafttype
}} else {
$ButtonOpenLink.Visible = $false
$LabelPhotographer.Visible = $false
$PictureboxThumbnail.Visible = $false
$ButtonOpenLink.Enabled = $false
if ( Search-LocalDB( ( 'Status {0}, error {1} (aircraft registration not found on Airport-Data.com)' -f $json.status, $json.error ) ) ) {
if ( $global:notfound ) {
[console]::Beep( 500, 500 ) # beep if registration not found
} }$LabelHelptext.Visible = $true
}}function Validate-Input( $key = $null ) {
if ( $key -eq 'Return' ) {
Search-Aircraft} else {
$cursorpos = $TextboxReg.SelectionStart + $TextboxReg.SelectionLength
$inputtext = $TextboxReg.Text.ToUpper( )
$inputtext = $inputtext -replace "[^A-Z\d\-]",""
if ( $inputtext -cne $TextboxReg.Text ) {
if ( $inputtext -cne $TextboxReg.Text.ToUpper( ) ) {
[console]::Beep( 500, 500 ) # beep in case of invalid character
}$TextboxReg.Text = $inputtext
$TextboxReg.SelectionStart = [Math]::Min( $cursorpos, $inputtext.Length )
$TextboxReg.SelectionLength = 0
}if ( ( $inputtext -replace "-","" ).Length -ge 4 ) {
$ButtonSearch.Enabled = $true
} else {
$ButtonSearch.Enabled = $false
}$LabelHelptext.Visible = $true
$LabelHelptext.Text = $defaulthelptext
$LabelAircraftType.Text = ''
$LabelAircraftType.Visible = $false
$LabelPhotographer.Text = ''
$LabelPhotographer.Visible = $false
$PictureboxThumbnail.Visible = $false
$ButtonOpenLink.Text = 'View photo on Airport-data.com'
$ButtonOpenLink.Enabled = $false
$ButtonOpenLink.Visible = $false
}}############################################# GUI form design was saved separately by ## Visual Studio/Ironman Software's ## PowerShell Pro Tools Suite as ## AirRegGUI.designer.ps1 and then manually ## embedded in AirRegGUI.ps1 by yours truly ## ## Start of embedded AirRegGUI.designer.ps1 #############################################[void][System.Reflection.Assembly]::Load( 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' )
[void][System.Reflection.Assembly]::Load( 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' )
$AirRegGUI = New-Object -TypeName System.Windows.Forms.Form
[System.Windows.Forms.TextBox]$TextboxReg = ( New-Object -TypeName System.Windows.Forms.TextBox )
[System.Windows.Forms.Button]$ButtonSearch = ( New-Object -TypeName System.Windows.Forms.Button )
[System.Windows.Forms.Button]$ButtonHelp = ( New-Object -TypeName System.Windows.Forms.Button )
[System.Windows.Forms.Button]$ButtonOpenLink = ( New-Object -TypeName System.Windows.Forms.Button )
[System.Windows.Forms.PictureBox]$PictureboxThumbnail = ( New-Object -TypeName System.Windows.Forms.PictureBox )
[System.Windows.Forms.Label]$LabelHelptext = ( New-Object -TypeName System.Windows.Forms.Label )
[System.Windows.Forms.Label]$LabelAircraftType = ( New-Object -TypeName System.Windows.Forms.Label )
[System.Windows.Forms.Label]$LabelPhotographer = ( New-Object -TypeName System.Windows.Forms.Label )
( [System.ComponentModel.ISupportInitialize]$PictureboxThumbnail ).BeginInit( )
$AirRegGUI.SuspendLayout( )
$TextboxReg.Location = (New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]37, [System.Int32]41 ) )
$TextboxReg.MaxLength = [System.Int32]8
$TextboxReg.Name = [System.String]'TextboxReg'
$TextboxReg.Size = (New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]100, [System.Int32]26 ) )
$TextboxReg.TabIndex = [System.Int32]0
$TextboxReg.Add_TextChanged( $TextboxReg_TextChanged )
$TextboxReg.Add_KeyUp( $TextboxReg_KeyUp )
$ButtonSearch.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]159, [System.Int32]40 ) )
$ButtonSearch.Name = [System.String]'ButtonSearch'
$ButtonSearch.Size = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]75, [System.Int32]28 ) )
$ButtonSearch.TabIndex = [System.Int32]1
$ButtonSearch.Text = [System.String]'Search'
$ButtonSearch.UseVisualStyleBackColor = $true
$ButtonSearch.Add_Click( $ButtonSearch_Click )
$ButtonSearch.Enabled = $false
$ButtonHelp.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]256, [System.Int32]40 ) )
$ButtonHelp.Name = [System.String]'ButtonHelp'
$ButtonHelp.Size = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]75, [System.Int32]28 ) )
$ButtonHelp.TabIndex = [System.Int32]2
$ButtonHelp.Text = [System.String]'Help'
$ButtonHelp.UseVisualStyleBackColor = $true
$ButtonHelp.Add_Click( $ButtonHelp_Click )
$ButtonOpenLink.Enabled = $false
#$ButtonOpenLink.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]37, [System.Int32]315 ) )$ButtonOpenLink.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]37, [System.Int32]355 ) )
$ButtonOpenLink.Name = [System.String]'ButtonOpenLink'
$ButtonOpenLink.Size = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]294, [System.Int32]28 ) )
$ButtonOpenLink.TabIndex = [System.Int32]4
$ButtonOpenLink.Text = [System.String]'View photo on Airport-data.com'
$ButtonOpenLink.UseVisualStyleBackColor = $true
$ButtonOpenLink.Add_Click( $ButtonOpenLink_Click )
$ButtonOpenLink.Visible = $false
$PictureboxThumbnail.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]82, [System.Int32]101 ) )
$PictureboxThumbnail.Name = [System.String]'PictureboxThumbnail'
$PictureboxThumbnail.Size = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]200, [System.Int32]150 ) )
$PictureboxThumbnail.TabIndex = [System.Int32]3
$PictureboxThumbnail.TabStop = $false
$PictureboxThumbnail.Visible = $false
$LabelHelptext.AutoSize = $true
$LabelHelptext.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]37, [System.Int32]101 ) )
$LabelHelptext.MaximumSize = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]294, [System.Int32]0 ) )
$LabelHelptext.Name = [System.String]'LabelHelptext'
$LabelHelptext.Size = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]275, [System.Int32]60 ) )
$LabelHelptext.TabIndex = [System.Int32]6
$LabelHelptext.Text = [System.String]''
$LabelAircraftType.AutoSize = $true
#$LabelAircraftType.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]33, [System.Int32]273 ) )$LabelAircraftType.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]33, [System.Int32]273 ) )
$LabelAircraftType.Name = [System.String]'$LabelAircraftType'
$LabelAircraftType.Size = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]110, [System.Int32]20 ) )
$LabelAircraftType.TabIndex = [System.Int32]5
$LabelAircraftType.Text = [System.String]'Photographer:'
$LabelAircraftType.Visible = $false
$LabelPhotographer.AutoSize = $true
#$LabelPhotographer.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]33, [System.Int32]273 ) )$LabelPhotographer.Location = ( New-Object -TypeName System.Drawing.Point -ArgumentList @( [System.Int32]33, [System.Int32]315 ) )
$LabelPhotographer.Name = [System.String]'LabelPhotographer'
$LabelPhotographer.Size = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]110, [System.Int32]20 ) )
$LabelPhotographer.TabIndex = [System.Int32]5
$LabelPhotographer.Text = [System.String]'Photographer:'
$LabelPhotographer.Visible = $false
# Icon embedding code by Theo on https://stackoverflow.com/a/53377253# Airplane icon image courtesy of https://icons8.com/$iconBase64 = 'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABY0lEQVR42mNkGGDAiEduIhDbAfFfIE4F4vP0doA5EB+HqnkO5T+mpwNAYD0QB0DZV4HYCog/0dMBmkB8BYiZoPw9QOwFxL/p5QAQmA/ECUj8BUCcSE8HyAHxbSBmQxKrB+ImejkABCYAcT4S/z80VBZRwwEgg/cyQOIaFxAF4ntAzIMk9guIPYF4H6UOeMgAyetGQPwBj9oGBkjQI4OPDJCccY0SB2wHYg8GSJYLwqOWFxoKImjiIA9YAPELch3QC8RFUH4BA6QExAUKgbgPi/g5ILYF4m/kOACUpeZB+aB4tQHi0zjUcwDxTQZIzkAHW4HYD4j/keoAUBF7AknsAQMkr+MCzlDfYgOgaLxIhL2gNHcKiHeBHACKW6oWrySAOlg5AEpIcpSYRCb4MigcMOBRMOCJcMCz4YAXRANeFA94ZTTg1TExgKYNEkJgwJtkA9ooHfBm+YB2TAa8azbgnVO6AAAjEXEBu6DybwAAAABJRU5ErkJggg=='
$iconBytes = [Convert]::FromBase64String( $iconBase64 )
$stream = New-Object IO.MemoryStream( $iconBytes, 0, $iconBytes.Length )
$stream.Write( $iconBytes, 0, $iconBytes.Length );
$iconImage = [System.Drawing.Image]::FromStream( $stream, $true )
$AirRegGUI.ClientSize = ( New-Object -TypeName System.Drawing.Size -ArgumentList @( [System.Int32]384, [System.Int32]441 ) )
$AirRegGUI.Controls.Add( $LabelHelptext )
$AirRegGUI.Controls.Add( $LabelAircraftType )
$AirRegGUI.Controls.Add( $LabelPhotographer )
$AirRegGUI.Controls.Add( $ButtonOpenLink )
$AirRegGUI.Controls.Add( $PictureboxThumbnail )
$AirRegGUI.Controls.Add( $ButtonHelp )
$AirRegGUI.Controls.Add( $ButtonSearch )
$AirRegGUI.Controls.Add( $TextboxReg )
$AirRegGUI.Font = ( New-Object -TypeName System.Drawing.Font -ArgumentList @( [System.String]'Microsoft Sans Serif', [System.Single]12, [System.Drawing.FontStyle]::Regular, [System.Drawing.GraphicsUnit]::Point, ( [System.Byte][System.Byte]0) ) )
$AirRegGUI.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog
$AirRegGUI.MaximizeBox = $false
$AirRegGUI.Name = [System.String]'AirRegGUI'
$AirRegGUI.SizeGripStyle = [System.Windows.Forms.SizeGripStyle]::Hide
$AirRegGUI.StartPosition = 'CenterScreen'
$AirRegGUI.Icon = [System.Drawing.Icon]::FromHandle( ( New-Object System.Drawing.Bitmap -Argument $stream ).GetHIcon( ) ) # Icon embedding code by Theo on https://stackoverflow.com/a/53377253
$AirRegGUI.Text = [System.String]'AirRegGUI.ps1'
$AirRegGUI.Add_Load( $Window_Load )
$AirRegGUI.Add_Shown( $Window_Shown )
$AirRegGUI.Add_HelpRequested( $ButtonHelp_Click )
( [System.ComponentModel.ISupportInitialize]$PictureboxThumbnail ).EndInit( )
$AirRegGUI.ResumeLayout( $false )
$AirRegGUI.PerformLayout( )
Add-Member -InputObject $AirRegGUI -Name base -Value $base -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name TextboxReg -Value $TextboxReg -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name ButtonSearch -Value $ButtonSearch -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name ButtonHelp -Value $ButtonHelp -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name PictureboxThumbnail -Value $PictureboxThumbnail -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name ButtonOpenLink -Value $ButtonOpenLink -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name LabelHelptext -Value $LabelHelptext -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name LabelAircraftType -Value $LabelAircraftType -MemberType NoteProperty
Add-Member -InputObject $AirRegGUI -Name LabelPhotographer -Value $LabelPhotographer -MemberType NoteProperty
########################################### End of embedded AirRegGUI.designer.ps1 ############################################ Check for program updates and notify user if availableCheck-Update# Open GUI window[void] $AirRegGUI.ShowDialog( )
# Clean up (ShowDialog does not always clean up by itself)[void] $AirRegGUI.Dispose( )
page last modified: 2025-10-11; loaded in 0.0182 seconds