Professional IronPython


Writing an IronPython Application to Use P/Invoke



Download 20,35 Mb.
Pdf ko'rish
bet369/453
Sana01.07.2022
Hajmi20,35 Mb.
#723045
1   ...   365   366   367   368   369   370   371   372   ...   453
Writing an IronPython Application to Use P/Invoke
If you’ve been following along with the example, you know it’s finally time to use the 
ConMode
class 
with IronPython. It’s now possible to determine the display mode, the size of the console window, 
and the capabilities it provides. Listing 16-9 shows the code used for testing this extension.
LISTINg 16-9: 
 Testing the Win32 API extension
# Import the Common Language Runtime.
import clr
# Access the extension.
clr.AddReferenceToFile(‘Win32API.DLL’)
import Win32API
# Create an instance of the class.
continues
548592c16.indd 355
2/24/10 12:49:28 PM
www.finebook.ir


356

CHAPTER 16
ExtEnding ironPython Using C#
TestWin32 = Win32API.ConMode()
# Check the display mode. 
print ‘The display mode is: ‘, 
print TestWin32.GetCurrentDisplayMode()
# Obtain the largest possible window size.
print ‘\nThe largest possible window size is: ‘
Size = TestWin32.GetConsoleWindowSize() 
print ‘\tColumns: ‘, Size.X 
print ‘\tRows: ‘, Size.Y
# Display the console characteristics. 
print ‘\nThe console has these characteristics:’
Chars = TestWin32.GetConsoleInfo() 
print ‘\tEcho Enabled: ‘, Chars.Echo 
print ‘\tLine Input Enabled: ‘, Chars.LineInput 
print ‘\tMouse Input Enabled: ‘, Chars.MouseInput 
print ‘\tProcessed Input Enabled: ‘, Chars.ProcessedInput 
print ‘\tWindow Input Enabled: ‘, Chars.WindowInput 
print ‘\tConsole Can Produce Processed Output:’, Chars.ProcessedOutput
print ‘\tConsole Uses Line Wrap: ‘, Chars.LineWrap
# Pause after the debug session.
raw_input(‘\nPress any key to continue...’)
The code begins by importing CLR support. It then creates a reference to 
Win32API.DLL
and 
imports the 
Win32API
namespace into the IronPython environment. The next step is to create an 
instance of the 
Win32API.ConMode
class, 
TestWin32
.
At this point, the code begins checking each console feature in turn, beginning with the console dis-
play mode, which doesn’t require any additional processing. The 
GetConsoleWindowSize()
method 
call requires that the code display the 
Size.X
(columns) and 
Size.Y
(rows) values separately.
The 
GetConsoleInfo()
method call comes next. This particular call requires a little more processing 
because it returns more information. The output of the call appears in Chars as a 
ConsoleData
data 
structure. As you can see, the code simply displays the 
true
or 
false
value of each of the data structure 
members. Figure 16-17 shows the output from this example.
One of the most important issues when making Win32 API calls from IronPython is to ensure that 
the C# extension processes the data in an easy-to-use manner. In addition, you should provide a 
consistent method for returning the data from the C# extension to IronPython, such as using data 
structures (as shown in the example).

Download 20,35 Mb.

Do'stlaringiz bilan baham:
1   ...   365   366   367   368   369   370   371   372   ...   453




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish