Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
#1

Чтобы при нажатии F10 выскакивал калькулятор

24.02.2013, 16:18. Просмотров 1074. Ответов 17
Метки нет (Все метки)

Есть программка. Я хочу, чтобы при нажатии например на клавишу F10 выскакивал например калькулятор ( который у меня уже был заложен по адресу C:/WINDOWS/system32/calc.exe ) даже если программа в трее или активна. Как реализовать ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 16:18
Ответы с готовыми решениями:

Как cделать, чтобы при нажатии из списка загружались картинки?
ЗДРАВСТВУЙТЕ ВСЕ.У меня есть вопрос. В листбоксе есть список.Как зделать чтоб...

как можно сделать чтобы при нажатии например SHIFT +F ..
как можно сделать чтобы при нажатии например SHIFT +F открывалось новое окно?

Как сделать чтобы при нажатии клавиши открывалось окно?
Мне надо сделать "информация о программе или краткая справка". Т.е. я хочу...

Нужно при нажатии checkbox чтобы кнопка становилась активна
Нужно при нажатии checkbox чтобы кнопка становилась активна. В onclick я это...

Что нужно сделать, чтобы при нажатии на button появлялся Image
Помогите пожалуйста, не знаю как сделать что бы при нажатии на button появлялся...

17
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,473
Записей в блоге: 3
24.02.2013, 17:19 #2
RegisterHotKey. Как сделать несколько RegisterHotKey и отменить регистрацию
0
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
24.02.2013, 21:40  [ТС] #3
это вроде мне не подходит
0
LK
Заблокирован
24.02.2013, 23:02 #4
C++
1
2
3
4
KeyPreview = true;
if (Key == VK_F10) {
  ShellExecute(...);
}
0
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
25.02.2013, 00:23  [ТС] #5
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
KeyPreview = true;
if (Key == VK_F10) {
  ShellExecute(...);
}
это мне его надо в событие вписать ?
0
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,473
Записей в блоге: 3
25.02.2013, 01:08 #6
В событии формы
0
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
25.02.2013, 01:12  [ТС] #7
Цитата Сообщение от Sasha Посмотреть сообщение
В событии формы
[C++ Error] Unit1.cpp(101): E2040 Declaration terminated incorrectly
[C++ Error] Unit1.cpp(100): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(100): E2333 Class member '_fastcall TForm1::NotePade1Click(TObject *)' declared outside its class
Я наверно что то не так делаю (
0
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,473
Записей в блоге: 3
25.02.2013, 01:18 #8
Ты б лучше код выложил а под ним ошибки!!!!!!!!!
0
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
25.02.2013, 01:24  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <mmsystem.h>   // For Open/Close CD-Rom
#include <IniFiles.hpp> // For save/load with ini-file
#include <ShellApi.h>   // Open disk A, C, D, E, F
#include <winsock.h>    // For IP-address
 
#pragma hdrstop
#include "Unit1.h"
#include "about.h"  // For AboutBox
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma link "Trayicon"
#pragma link "trayicon"
#pragma resource "*.dfm"
TForm1 *Form1;
int CD          = 0;
int HF          = 0;
int DriveD      = 0;
String ILabel   = "  IP-address: ";
TIniFile        *ini;
WORD            wVersionRequested;
WSADATA         WSAData;
hostent         *P;
char            s[128];
char            *P2;
in_addr         in;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
// Load with ini-file --------------------------------------------------------
        ini = new TIniFile( ChangeFileExt( Application -> ExeName, ".INI" ) );
        Top     =  ini -> ReadInteger( "Position", "Top", Top);
        Left    =  ini -> ReadInteger( "Position", "Left", Left);
        delete ini;
// End load with ini-file -----------------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
// Close application ---------------
        Application -> Terminate();
// End close application ------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
// Get drive type for "D:"--------------------
        if (GetDriveType("D:") == DRIVE_CDROM)
                {DriveD = 1;}
        else
                {DriveD = 0;}
// End get drive type-------------------------
// CGuage [1,2] ------------------------------------------------------------------------------------------
// CGauge 1
        CGauge1 -> MaxValue = int(DiskSize(3)/1048576);
        CGauge1 -> Progress = int(DiskFree(3)/1048576);
        CGauge1 -> Hint = "Free space in drive C: " + IntToStr (int(DiskFree(3)/1048576)) + " Mb";
// CGauge 2
        if (DriveD == 0)
                {
                CGauge2 -> MaxValue = int(DiskSize(4)/1048576);
                CGauge2 -> Progress = int(DiskFree(4)/1048576);
                CGauge2 -> Hint = "Free space in drive D: " + IntToStr (int(DiskFree(4)/1048576)) + " Mb";
                }
        else
                {
                CGauge2 -> Enabled == False;
                }
// End CGauge [1,2] --------------------------------------------------------------------------------------
 
// Get IP-addres --------------------------------------
        wVersionRequested = MAKEWORD(1,1);
        WSAStartup(wVersionRequested,&WSAData);
        gethostname(s, 128);
        P = gethostbyname(s);
        in.S_un.S_un_b.s_b1 = P->h_addr_list[0][0];
        in.S_un.S_un_b.s_b2 = P->h_addr_list[0][1];
        in.S_un.S_un_b.s_b3 = P->h_addr_list[0][2];
        in.S_un.S_un_b.s_b4 = P->h_addr_list[0][3];
        P2 = inet_ntoa(in);
        WSACleanup();
        StatusBar1 -> SimpleText = ILabel + P2;
// End get IP-addres ----------------------------------
 
// Sleep application --------
        Sleep(0);
// End sleep timer ----
 
// Get SystemDate ----------------------------------------
        Label1 -> Caption = "Time:  " + TimeToStr(Now());
        Label2 -> Caption = "Date:  " + DateToStr(Date());
// End get SystemDate ------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NotePade1Click(TObject *Sender)
 KeyPreview = true;
if (Key == VK_F10) {
  ShellExecute(...);
}
{
// Run NotePade-----------------------------------------------
        WinExec("C:/WINDOWS/system32/notepad.exe",wsMinimized);
// End run NotePade ------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WordPad1Click(TObject *Sender)
{
// Run Write -----------------------------------------------
        WinExec("C:/WINDOWS/system32/write.exe",wsMinimized);
// End run Write -------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
// Run Calc -----------------------------------------------
        WinExec("C:/WINDOWS/system32/calc.exe",wsMinimized);
// End run Culc -------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::iExpress1Click(TObject *Sender)
{
// Run iExpress -----------------------------------------------
        WinExec("C:/WINDOWS/system32/dxdiag.exe",wsMinimized);
// End run iExpress -------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Perfmon1Click(TObject *Sender)
{
// Run Perfmon -----------------------------------------------
        WinExec("C:/WINDOWS/system32/regedt32.exe",wsMinimized);
// End run Perfmon -------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Taskmgr1Click(TObject *Sender)
{
// Run Taskmgr -----------------------------------------------
        WinExec("C:/WINDOWS/system32/eventvwr.exe",wsMinimized);
// End run Taskmgr -------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1Click(TObject *Sender)
{
// Open/Clse CD-Rom --------------------------------------------------------
        if (CD == 0)
        {
        mciSendString("Set cdaudio door open wait", NULL, 0, Handle);           // Open CD-Rom
        CD = 1;
        }
        else
        {
        mciSendString ("Set cdaudio door closed wait", NULL, 0, Handle);        // Close CD-Rom
        CD = 0;
        }
// End Open/Colse CD-Rom ----------------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
// Save in ini-file --------------------------------------------------------
        ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
        ini -> WriteInteger ("Position","Top", Top);
        ini -> WriteInteger ("Position","Left", Left);
        delete ini;
// End save in ini-file ----------------------------------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrayIcon1Click(TObject *Sender)
{
// Hide/Show Form1 ------------
        if (HF == 0)
        {
        ShowWindow (Application -> Handle, SW_HIDE);
        Form1 -> Hide();
        HF = 1;
        }
        else
        {
        ShowWindow (Application -> Handle, SW_SHOW);
        Form1 -> Show();
        HF = 0;
        }
// End Hide/Show Form1 ------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StaticText1Click(TObject *Sender)
{
// Open disk C: in new window --------------------------------
        ShellExecute("C:/","open","C:/",0,"C:/",wsMinimized);
// End open disk C: in new window ----------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StaticText2Click(TObject *Sender)
{
// Open disk D: in new window --------------------------------
        ShellExecute("D:/","open","D:/",0,"D:/",wsMinimized);
// End open disk D: in new window ----------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StaticText4Click(TObject *Sender)
{
// Open disk A: in new window --------------------------------
        ShellExecute("A:/","open","A:/",0,"A:/",wsMinimized);
// End open disk A: in new window ----------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StaticText3Click(TObject *Sender)
{
// Open disk E: in new window --------------------------------
        ShellExecute("E:/","open","E:/",0,"E:/",wsMinimized);
// End open disk E: in new window ----------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StaticText5Click(TObject *Sender)
{
// Open disk F: in new window --------------------------------
        ShellExecute("F:/","open","F:/",0,"F:/",wsMinimized);
// End open disk F: in new window ----------------------------
}
//---------------------------------------------------------------------------
void __fastcall TForm1::About1Click(TObject *Sender)
{
// Show AboutBox ----------------------------------------------------
        Application -> CreateForm(__classid(TAboutBox), &AboutBox);
        AboutBox -> ShowModal();
// End show AboutBox ------------------------------------------------
}
 
//---------------------------------------------------------------------------
Добавлено через 33 секунды
Цитата Сообщение от Sasha Посмотреть сообщение
Ты б лучше код выложил а под ним ошибки!!!!!!!!!
строка номер 100 смотри
0
LK
Заблокирован
25.02.2013, 01:38 #10
дык, одного этого:
C++
1
ShellExecute(...);
мало, вместо троеточия должен быть ваш код вызова калькулятора, кажется, так:
C++
1
ShellExecute(Handle,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
Добавлено через 1 минуту
И событие должно быть Form->OnKeyPress
0
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
25.02.2013, 01:40  [ТС] #11
Цитата Сообщение от LK Посмотреть сообщение
дык, одного этого:
C++
1
ShellExecute(...);
мало, вместо троеточия должен быть ваш код вызова калькулятора, кажется, так:
C++
1
ShellExecute(0,"open","calc",SW_SHOW);
Добавлено через 1 минуту
И событие должно быть Form->OnKeyPress
C++
1
2
3
4
5
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
KeyPreview = true;
if (Key == VK_F10) {
  ShellExecute(0,"open","calc",SW_SHOW);
}
[C++ Error] Unit1.cpp(234): E2040 Declaration terminated incorrectly
[C++ Error] Unit1.cpp(233): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(233): E2333 Class member '_fastcall TForm1::FormKeyPress(TObject *,char &)' declared outside its class
[C++ Warning] Unit1.cpp(9): W8058 Cannot create pre-compiled header: write failed
0
LK
Заблокирован
25.02.2013, 01:46 #12
C++
1
2
3
4
5
6
7
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
  Form1->KeyPreview = true;
  if (Key == VK_F10) {
    ShellExecute(Handle,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
  }
}
Cтандартные обработчики надо делать, используя Инспектор объектов, вторая вкладка.

Добавлено через 2 минуты
интересно... кто-то еще использует дискеты:
C++
1
ShellExecute("A:/","open","A:/",0,"A:/",wsMinimized);
?
0
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
25.02.2013, 01:49  [ТС] #13
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
5
6
7
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
  Form1->KeyPreview = true;
  if (Key == VK_F10) {
    ShellExecute(Handle,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
  }
}
Cтандартные обработчики надо делать, используя Инспектор объектов, вторая вкладка.

Добавлено через 2 минуты
интересно... кто-то еще использует дискеты:
C++
1
ShellExecute("A:/","open","A:/",0,"A:/",wsMinimized);
?
Мало ли)

Добавлено через 1 минуту
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
5
6
7
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
  Form1->KeyPreview = true;
  if (Key == VK_F10) {
    ShellExecute(Handle,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
  }
}
Cтандартные обработчики надо делать, используя Инспектор объектов, вторая вкладка.
Сделал я по твоему мануалу. Не открывает калькулятор при нажатии ф10
0
_Dimon_
1396 / 559 / 127
Регистрация: 31.10.2011
Сообщений: 1,954
25.02.2013, 03:58 #14
Цитата Сообщение от lonk Посмотреть сообщение
Сделал я по твоему мануалу. Не открывает калькулятор при нажатии ф10
Потому-что мат.часть учить надо.

1. В свойствах формы ставишь KeyPreview = true;

2.
C++
1
2
3
4
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
 if (Key==VK_F10) ShellExecute(Handle,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
}
0
lonk
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 21
25.02.2013, 09:14  [ТС] #15
Цитата Сообщение от _Dimon_ Посмотреть сообщение
Потому-что мат.часть учить надо.

1. В свойствах формы ставишь KeyPreview = true;

2.
C++
1
2
3
4
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
 if (Key==VK_F10) ShellExecute(Handle,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
}
не работает получается идет выделение MainMenu1, но само не открывает калькулятор
0
Sasha
4923 / 2387 / 530
Регистрация: 05.06.2008
Сообщений: 7,473
Записей в блоге: 3
25.02.2013, 10:26 #16
Цитата Сообщение от lonk Посмотреть сообщение
не работает получается идет выделение MainMenu1, но само не открывает калькулятор
А у меня работает!!!!!!!!!!
0
BRcr
4015 / 2305 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
25.02.2013, 10:48 #17
Цитата Сообщение от lonk Посмотреть сообщение
Я хочу, чтобы при нажатии например на клавишу F10 выскакивал например калькулятор (...) даже если программа в трее или активна.
И с какого перепуга тогда RegisterHotKey() не подходит?
0
_Dimon_
1396 / 559 / 127
Регистрация: 31.10.2011
Сообщений: 1,954
25.02.2013, 15:42 #18
Цитата Сообщение от BRcr Посмотреть сообщение
И с какого перепуга тогда RegisterHotKey() не подходит?
Почему-же не подходит?
Кстати можно даже хук поставаить, что-то типа этого:
C++
1
 HHOOK KeybHookHandle = SetWindowsHookEx(WH_KEYBOARD_LL,KeybProc,NULL,NULL);
>>> не работает получается идет выделение MainMenu1, но само не открывает калькулятор

Вообще-то F10 нехорошо для таких целей использовать, так как на эту кнопку действительно MainMenu вызывается (так же как и на ALT). ИМХО.
0
25.02.2013, 15:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2013, 15:42

Как связать две формы? Чтобы при нажатии в MainMenu выскакивало окно.
Немогу понять как связать две форм что бы при нажатие в MainMenu выскакивало...

Как сделать,чтобы при нажатии на надпись открывалось строго соответствующее окно
Добрый день!Подскажите пожалуйста как разобраться в программе C++Builder.Как...

Что добавить в код, чтобы при нажатии на кнопку удалялись найденные файлы?
Что добавить в код, чтоб при нажатии на кнопку, оно удаляло найденные файлы? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru