我正在尋找在我正在使用的項目中使用Win32 API。但是我不知道如何從我的cygwin項目中調用Win32 API。有人能指出我正確的方向嗎?如何從Cygwin程序調用Win32 API
回答
通過包含「windows.h」頭文件,可以從cygwin程序訪問Win32 API。這意味着你已經安裝了win32軟件包。下面是一個例子的程序:
#include <iostream>
#include <string>
#include <windows.h>
int main(int argc, char *argv[])
{
std::string val;
if (argc > 1)
{
val = argv[1];
}
std::cout << "You typed: " << val << std::endl;
::MessageBox(NULL, val.c_str(), "You Typed:", MB_OK);
return 0;
}
這可以編譯和「使文件名」,其中filename.cpp含有上述源連接。然後通過在bash提示符處鍵入./filename xxxx來執行。然後xxxx將出現在消息框窗口中。
有趣...我會試試這個。從這個例子的外觀來看,它是否會創建一個彈出窗口? *思考*如果是的話,這可能確實是一件美妙的事情! – redhotspike 2012-04-02 18:41:37
是的,它會創建一個彈出窗口。只要確保你安裝了win32開發包。我通常會對Cygwin進行全面安裝,因此我無法告訴您哪些特定的代碼可以脫手。 – 2012-04-02 18:51:09
我覺得我剛剛找到了100美元的賬單......認真:這正是我所期待的! – redhotspike 2012-04-02 18:52:13
你可以看看Cygwin FAQ(特別是6.9如何使用Win32 API調用?)
當然,你將需要得到WIN32API頭保持 - 你最好的選擇是下載/安裝fre C++編譯器(例如MinGW)並引用它的頭文件。
好東西!謝謝。如需進一步參考,我發現[在Cygwin應用程序中使用Win32文件API](http://cygwin.com/cygwin-ug-net/using.html#pathnames-win32-api)應該有人需要它。 – redhotspike 2012-04-02 18:49:39
如果您瞭解Perl,您可能需要使用win32 :: GUI模塊來創建窗口和對話框。確保perl5包含在你的cygwin安裝中。
運行CPAN從cygwin命令行來獲取CPAN解釋然後做一個得到的Win32 :: GUI。
**To Get Familiar with win32::GUI**
===========================================
win32-gui-demos.pl for a tutorial
man 1 win32-gui-demos.pl for an overview -or-
perldoc win32-gui-demos.pl for an overview
perldoc win32::GUI for an intro
如果教程不從其菜單運行,只需將它們複製並粘貼到vi文件中,並在保存時使它們可執行。
如:(簡單的對話,以增強)
#!perl -w
use strict;
use warnings;
use Win32::GUI();
my $main = Win32::GUI::DialogBox->new(
-name => 'Main',
-text => 'Continue with Outlook Backup?',
-width => 200,
-height => 200
);
$main->AddButton(
-name => 'Default',
-text => 'Ok',
-default => 1, # Give button darker border
-ok => 1, # press 'Return' to click this button
-width => 60,
-height => 20,
-left => $main->ScaleWidth() - 140,
-top => $main->ScaleHeight() - 30,
);
$main->AddButton(
-name => 'Cancel',
-text => 'Cancel',
-cancel => 1, # press 'Esc' to click this button
-width => 60,
-height => 20,
-left => $main->ScaleWidth() - 70,
-top => $main->ScaleHeight() - 30,
);
$main->Show();
Win32::GUI::Dialog();
exit(0);
sub Main_Terminate {
return -1;
}
sub Default_Click {
print "OK to Proceed Selected\n";
return 0;
}
sub Cancel_Click {
print "Cancel Backup Selected\n";
return 1;
}
- 1. 從cygwin移植到win32本機程序
- 2. 如何從內聯彙編程序調用Win32 API函數?
- 3. 如何從PHP製作Win32 API調用?
- 4. 如何從Win32進程調用.NET DLL?
- 5. Win32 DDK:從驅動程序中斷調用API是否錯誤?
- 6. 如何從另一個C++ win32控制檯應用程序調用C++ Win32 DLL
- 7. 如何從轉換的Win32應用程序調用UWP API。 (桌面應用程序轉換器)
- 8. 從Java調用Win32 API方法
- 9. 如何使用Win32 API創建線程?
- 10. 從我的應用程序調用cygwin命令,避免DOS shell
- 11. Haskell中的Win32 API調用?
- 12. Perl Win32 :: API()調用()函數
- 13. 如何使用Win32 ThreadPool API?
- 14. 如何將消息從Win32應用程序發送到Java SWT應用程序?
- 15. 如何在win32 DLL程序中使用IntelliProtector API
- 16. 如何通過API退出Win32應用程序?
- 17. 如何從本機win32應用程序調用C#COM程序集時調試它?
- 18. 幫助postmorten調試Win32應用程序
- 19. Qt需要將Qt應用程序從win32應用程序調用到前臺
- 20. 從Win32應用程序調用REST服務
- 21. 阻止從一個Win32應用程序
- 22. 如何從Android應用程序調用PHP Web API(JSON)?
- 23. 從win32應用程序使用Excel 2007
- 24. 如何在C++ Win32應用程序
- 25. 如何使用Win32 API在Windows中獲取應用程序的進程HANDLE
- 26. 從另一個程序調用python API
- 27. 從Windows Phone Silverlight應用程序調用winrt api應用程序
- 28. 從Win32的RPC調用
- 29. 如何從Win32使用.Net程序集而不註冊?
- 30. 如何使用win32從互聯網更新程序(exe)
你能具體談談你想要做什麼? – 2012-04-02 18:16:22
當然;這是參考另一個問題,我問:[如何從設備讀取字節](http://stackoverflow.com/questions/9946795/how-to-read-bytes-from-a-device-using-cc- in-windows#comment12708876_9946795) – redhotspike 2012-04-02 18:19:55