| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 «  : 07-06-2006 21:28 »   | 
								
								 | 
							  
							 
							Привет. Помогите, пожалуйста доработать прогу, чтобы иконка в трей добавлялась (и по клику правой мышкой диалог открывался), в панель Пуск->Все программы, в реестр, на рабочий стол.
  #include<iostream.h> int main() {
     cout<<"Hello, world!";
  return 0; } 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 08-06-2006 08:37 »   | 
								
								 | 
							  
							 
							scraper, про трей рыскай тут, мне щас некогда искать - на обеде я https://forum.shelek.ru/index.php?topic=8674.0пост №20  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 08-06-2006 08:42 от Алексей1153 »
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Hooter
							
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 08-06-2006 09:07 »   | 
								
								 | 
							  
							 
							Привет. Помогите, пожалуйста доработать прогу, чтобы иконка в трей добавлялась (и по клику правой мышкой диалог открывался), в панель Пуск->Все программы, в реестр, на рабочий стол.
  #include<iostream.h> int main() {
     cout<<"Hello, world!";
  return 0; }
  Ну прям клуб весёлых и находчивых    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							npak
							
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 08-06-2006 09:28 »   | 
								
								 | 
							  
							 
							Особенной умиляет "доработать"    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							PooH
							
								Глобальный модератор
								
								 
								  Offline
								Пол:   
								
								... и можно без хлеба!
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 08-06-2006 10:04 »   | 
								
								 | 
							  
							 
							иконка в реестр,ну-ну...   да, вроде, и прога консольная... нафига, ей в трэе иконка? А ярлыки добавлять при каждом запуске? прикольно...   и о чем будет диалог (по клику правой _мышкой_)? если мышку положить слева - диалог не должен открываться? PS: ты шутишь - и мы шутим    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 08-06-2006 10:09 от PooH »
								 | 
								
									 
									Записан
								 | 
							  
							 
							Удачного всем кодинга! -=x[PooH]x=- 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							PooH
							
								Глобальный модератор
								
								 
								  Offline
								Пол:   
								
								... и можно без хлеба!
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 08-06-2006 10:11 »   | 
								
								 | 
							  
							 
							помогите довести до ума проект операционки!!! пока сделал только:   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Удачного всем кодинга! -=x[PooH]x=- 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 08-06-2006 18:40 »   | 
								
								 | 
							  
							 
							Ладно, будем резать по частям:
  Как прогу добавить в трей?  То есть что бы при закрытии, она не уничтожалась полностью, а ее можно было опять вызвать по клику левой кнопкой мыши по значечку в нижнем правом углу?
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 08-06-2006 18:51 »   | 
								
								 | 
							  
							 
							scraper, прогу в трей нельзя добавить, можно только прописать там иконку. Которая может посылать сообщения приложению, его прописавшему - ссылку я тебе дал, смотри 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 08-06-2006 18:54 от Алексей1153 »
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 08-06-2006 19:01 »   | 
								
								 | 
							  
							 
							Алексей1153, Я просмотрел, там нет ничего...   ((  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 08-06-2006 19:06 »   | 
								
								 | 
							  
							 
							scraper, хм... щас я попробую .... там вот что: Q: как создать иконку в области уведомлений (трее)? как определить, какие действия прпоизводит с иконкой юзверь? как сделать анимацию иконки в трее? как удалить иконку? A:для всего - использовать процедуру API - Shell_NotifyIcon(). Например, сделаем так, чтобы по нажатию кнопки меню окно программы сворачивалось в трей (иконка сначала недолго поморгает), а при щелчке левой кнопкой мыши по иконке - разворачивалось к предыдущему состоянию. В примере использовано однодокументное приложение, поэтому "всё происходит" в классе CMainFrame. Переписать для CDialog и вообще для любого случая - несложно. //определение класса CMainFrame class CMainFrame : public CFrameWnd { 	//переменная для сохранения состояния окна до сворачивания. 	//"Запоминаем" сюда значения SW_MAXIMIZE или SW_RESTORE 	DWORD m_dwdTrayShowCMD; 	 	//определяем константы 	enum 	{ 		//идентификатор иконки приложения в трее. 		//не путать с ID ресурса иконки!!! 		e_tray_ID=1000,	 		e_tray_ID_1=1001,	//(ID второй иконки для анимации) 		e_tray_MSG=WM_COMMAND,//сообщение, посылаемое из трея 	}; 	... 	... 	//это добавит визард -> 	 // Overrides 	// ClassWizard generated virtual function overrides 	//{{AFX_VIRTUAL(CMainFrame) 	... 	... 	protected: 	virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); 	//}}AFX_VIRTUAL };
  //конструктор CMainFrame::CMainFrame() { 	m_dwdTrayShowCMD=SW_MAXIMIZE; }
  //обработчик кнопки меню "свернуть в трей" (ID_PUTTOTRAY) void CMainFrame::OnPuttotray() { 	//"запоминаем", какой командой потом разворачивать окно 	m_dwdTrayShowCMD=((GetStyle()&WS_MAXIMIZE)?SW_MAXIMIZE:SW_RESTORE); 	 	//заполняем структуру NOTIFYICONDATA для иконки 	NOTIFYICONDATA ndata= 	{ 		//размер структуры 		sizeof(NOTIFYICONDATA), 		//хендл этого окна 		m_hWnd, 		//идентификатор иконки трея в приложении 		e_tray_ID, 		//опции: есть иконка, есть сообщение, есть надпись 		NIF_ICON|NIF_MESSAGE|NIF_TIP, 		//сообщение, посылаемое иконкой из трея (сейчас == WM_COMMAND) 		e_tray_MSG, 		//иконка из ресурсов 		::AfxGetApp()->LoadIcon(IDR_MAINFRAME), 		//всплывающая надпись 		"Значок моей программы" 	}; 	 	//заполняем структуру NOTIFYICONDATA для "пустой" иконки 	NOTIFYICONDATA ndata1=ndata; 	ndata1.hIcon=0; 	 	//скрываем окно программы 	ShowWindow(SW_HIDE); 	 	//добавляем значок e_tray_ID в трей 	Shell_NotifyIcon(NIM_ADD,&ndata); 	 	//"моргаем" 4 раза 	for(int i=0;i<4;i++) 	{ 		//заменяем значок в трее пустым 		Shell_NotifyIcon(NIM_MODIFY,&ndata1); 		Sleep(70); 	 		//возвращаем обратно иконку 		Shell_NotifyIcon(NIM_MODIFY,&ndata); 		Sleep(70); 	} 	 	return; }
  добавим обработчик для команды e_tray_MSG (==WM_COMMAND) - переопределим виртуальную функцию  BOOL CWnd::OnCommand(WPARAM wParam, LPARAM lParam) BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam)  { 	//определяем, что сообщение от иконки e_tray_ID 	if(wParam==e_tray_ID) 	{ 		//определяем, какое действие мышью произвели 		switch(lParam) 		{ 			case WM_LBUTTONDOWN: 			{ 				//показываем окно ("запомненной" командой) 				ShowWindow(m_dwdTrayShowCMD); 				 				//заполняем структуру для удаления иконки 				NOTIFYICONDATA ndata= 				{ 					sizeof(NOTIFYICONDATA), 					m_hWnd, 					e_tray_ID 				}; 				 				//удаляем иконку 				Shell_NotifyIcon(NIM_DELETE,&ndata); 			} 			break; 	 			case WM_MOUSEMOVE: 			{ 				//по иконке двигался курсор 			} 			break; 	 			case WM_LBUTTONUP:{}break; 			case WM_LBUTTONDBLCLK:{}break; 			case WM_RBUTTONDOWN:{}break; 			case WM_RBUTTONUP:{}break; 			case WM_RBUTTONDBLCLK:{}break; 			case WM_MBUTTONDOWN:{}break; 			case WM_MBUTTONUP:{}break; 			case WM_MBUTTONDBLCLK:{}break; 		} 	 		//сообщение обработано 		return 1; 	} 	 	return CFrameWnd::OnCommand(wParam, lParam); }
   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 08-06-2006 19:13 »   | 
								
								 | 
							  
							 
							Алексей1153, Спасибо большое.   Это лучше в Borland C++ Buildere 6.0 делать? Само написаное куда вставлять-то?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 08-06-2006 19:18 »   | 
								
								 | 
							  
							 
							scraper, это, в принципе, практически АПИ (хотя mfc). То есть переделать несложно и в билдер, я думаю. Но этот пример я писал в VC++6 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 08-06-2006 19:24 »   | 
								
								 | 
							  
							 
							Алексей1153, спасибо огромное, Алексей, но мне бы надо на Builder-е,  Что конкретно мне надо: Научиться в трей сварачивать, в регистры прописывать, в панель Пуск добавлять. На Builder как это делается? И еще: работа с регистрами, есть ссылка, объясняющая это? Зачем ключ в регистр добавлять? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 08-06-2006 19:45 »   | 
								
								 | 
							  
							 
							scraper, как иконки делать - не подскажу, не разбирался...  А какие регистры?    РЕЕСТР . что ты хочешь туда записать? С реестром я работал, имеется даже собственная библиотечка, но опять же не под билдер  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #14 : 08-06-2006 19:51 »   | 
								
								 | 
							  
							 
							Алексей1153, вот здорово! Слушай, пока теория: Ключ проги в реестр добавляют чтобы бысто ее запускать. Так? Еще есть что-нибудь, в смысле, зачем это нужно? Ключ что это? Если ответить гуманитарным языком. С примером (маленьким). Практика: Как програмно из проги добавить ключ в реестр, соответственно иконку вывести на раб.стол или в Пуск. О! 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #15 : 08-06-2006 19:55 »   | 
								
								 | 
							  
							 
							scraper, реестр - древовидная база данных (статических и динамических). Хранят там все, что не попадя. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #16 : 08-06-2006 20:02 »   | 
								
								 | 
							  
							 
							scraper, ты не понимаешь ...  А я не учитель - расскажу как сможу: реестр содержит дерево записей. Там обычно хранятся настройки программ и системы, прописаны стандартные и нестандартные пути к файлам и т.д. ключ - это корень одного из деревьев( или подключи - ветви дерева), стандартные (их ставит сама винда, их низя удалять): HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG дерево содержит подключи, которые могут содержать параметры. Параметрам присваивается значение - настройки и т.д. Сам по себе реестр ничего не делает - просто огромный текстовый файл. И лазить тебе туда рановато - замочишь систему    Литературу не подскажу - не знаю, ищи в поисковых системах  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #17 : 08-06-2006 20:09 »   | 
								
								 | 
							  
							 
							Алексей1153, Я придерживаюсь принципа, раз голова залезла, значит нужно и плечи просовывать.
  Можно примерчик, только не большой, как прогу на Builder-е, в реестр запихнуть? И потом как с этим ключом работать, тоесть мне нужна иконка, где-нибудь, щелкнул, и вот вам, пожалуйста, моя прога.
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #18 : 08-06-2006 20:16 »   | 
								
								 | 
							  
							 
							прогу в принципе можно запихнуть в реестр   ) но этого разве что вирусы только делают. для ярлыка функции есть, но сейчас не нашёл... мож кто подскажет  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #19 : 08-06-2006 20:40 »   | 
								
								 | 
							  
							 
							Алексей1153, Зачем вирусы это делают? И функцию я бы очень хотел, с маленьким примерчиком (очень маленьким), если не трудно, ... 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #20 : 08-06-2006 21:18 »   | 
								
								 | 
							  
							 
							вирусы - работа у них такая   пример, как я пользую : //прочитать DWORD параметр из ключа реестра bool CFileMinder::_R_ReadRegKeyDWDParam(HKEY k,CString& parName,DWORD* value) { 	DWORD type=REG_DWORD;//тип параметра - DWORD 	DWORD datalen=4; 	return(ERROR_SUCCESS==RegQueryValueEx(k,parName,0,&type,(BYTE*)(value),&datalen)); }
  //создать DWORD параметр в ключе реестра bool CFileMinder::_R_SaveRegKeyDWDParam(HKEY k,CString& parName,DWORD* value) { 	return (ERROR_SUCCESS==RegSetValueEx(k,parName,0,REG_DWORD,(BYTE*)value,4)); }
  примерно так...  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							PooH
							
								Глобальный модератор
								
								 
								  Offline
								Пол:   
								
								... и можно без хлеба!
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #21 : 09-06-2006 05:09 »   | 
								
								 | 
							  
							 
							Вот пример работы с реестром на билдере: http://www.softholm.com/articles/register.htmlЗачем вирусы это делают? по разным причинам... например, есть специальный ключ, такой что если в него прописать путь для запуска проги, то винда ее запустит сразу после своего старта... к ярлыкам реестр не имеет никакого отношения. а здесь  http://sources.ru/builder/faq/015.html про создание ярлыков  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Удачного всем кодинга! -=x[PooH]x=- 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							scraper
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #22 : 10-06-2006 20:44 »   | 
								
								 | 
							  
							 
							Спасибо, буду разгребать...    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |