我正在寻找在我正在使用的项目中使用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. 从C#应用程序调用win32 dll api
- 5. 如何从Win32进程调用.NET DLL?
- 6. Win32 DDK:从驱动程序中断调用API是否错误?
- 7. 如何从另一个C++ win32控制台应用程序调用C++ Win32 DLL
- 8. 如何从转换的Win32应用程序调用UWP API。 (桌面应用程序转换器)
- 9. 从Java调用Win32 API方法
- 10. 如何使用Win32 API创建线程?
- 11. Perl Win32 :: API()调用()函数
- 12. Haskell中的Win32 API调用?
- 13. 从我的应用程序调用cygwin命令,避免DOS shell
- 14. 在C++程序中跟踪Win32 API调用
- 15. 调试Win32 API应用程序内存泄漏
- 16. Win32应用程序调用C代码
- 17. 如何使用Win32 ThreadPool API?
- 18. 如何将消息从Win32应用程序发送到Java SWT应用程序?
- 19. 如何通过API退出Win32应用程序?
- 20. 如何在win32 DLL程序中使用IntelliProtector API
- 21. 从Julia调用Win32函数
- 22. 如何从本机win32应用程序调用C#COM程序集时调试它?
- 23. 帮助postmorten调试Win32应用程序
- 24. 崩溃调试Win32应用程序
- 25. 使用Win32 API从python
- 26. Qt需要将Qt应用程序从win32应用程序调用到前台
- 27. 从电子邮件正文中调用Win32应用程序
- 28. 从IIS 7.5 Web应用程序调用Win32 CreateEvent()失败
- 29. 从Win32应用程序调用REST服务
- 30. 阻止从一个Win32应用程序
你能具体谈谈你想要做什么? – 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