Записки сисадмина
Алексей Никипольский
Понедельник, 29.04.2024, 03:09
 
Меню
Настройка windows XP [38]
тонкости настройки, скрытые возможности
Программирование [8]
Нюансы, примеры, мои наработки и прочая полезная информация
Защита [28]
Компьютера, данных, интернет соединений и прочая полезная информация по защите
Обзор новинок [15]
Новинки ПО и железа
Обмен опытом [20]
Заработок в сети [9]
Все виды заработка в сети интернет, обзор, анализ, рекомендации
Распознование [10]
Все о методах и способах распознавания графической информации. Взлом капчи, методы и способы анализа...
Электронные книги [4]
По PHP CSS SQL PERL программированию Всё что есть в свободном доступе в интернете на разных ресурсах.
WEB программирование [9]
Всё о программировании WEB PHP Java PERL HTTP HTML и т.п.
Взлом [6]
методика взлома, примеры взлома, способы защиты от взлома
Онлайн сервисы [2]
Полезные сервисы онлайн
Администрирование [27]
Опыт системного администрирования
Статистика
Календарь
«  Октябрь 2010  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Главная » 2010 » Октябрь » 3 » С++Builder всякие полезности
16:00
С++Builder всякие полезности

Как создать Edit для ввода IP адреса, как в свойствах протокола TCP/IP ?
 
INITCOMMONCONTROLSEX CommCtrl;
CommCtrl.dwSize=sizeof(CommCtrl);
CommCtrl.dwICC=ICC_INTERNET_CLASSES;
if(::InitCommonControlsEx(&CommCtrl)){
HWND hWndIP=::CreateWindow("SysIPAddress32","IPAddr",
WS_CHILD | WS_TABSTOP | WS_GROUP,10,72,130,24,Handle,0,0,0);
if (hWndIP) ::ShowWindow(hWndIP, SW_SHOW);
}

Как вызвав, почтового клиента, поместить сразу же туда автоматически текст сообщения и отправителя? 
 
ShellExecute(Handle,"open","mailto:mail@mail.ru?subject=\"У Шуры Шара\"&body=\"Шура шарит Шаурму\"",NULL,NULL,SW_SHOW);

как программно установить BorderIcons. т.е. мне нужно убрать кнопки минимизировать и распахнуть. 
 
TBorderIcons tempBI = BorderIcons; tempBI >> biMaximize; tempBI >> biMinimize; BorderIcons = tempBI;
Код: BorderStyle = bsToolWindow;
Загрузка без картинок в CppWebBroser... как? 
   
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
 CustomDownLoad = new TCustomDownLoad(CppWebBrowser1);
 N4->Checked = CustomDownLoad->DownloadControlOptions.Contains(dcoImages);
 CppWebBrowser1->Navigate(WideString("URL"));
 }
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1() { CustomDownLoad->Release(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
 if(CustomDownLoad->DownloadControlOptions.Contains(dcoImages)) CustomDownLoad->DownloadControlOptions = TDownloadControlOptions();
 else CustomDownLoad->DownloadControlOptions = TDownloadControlOptions() << dcoImages; N4->Checked = !N4->Checked; CppWebBrowser1->Refresh();
}

Как программно нажать кнопку на HTML странице?
void __fastcall TForm1::ClickButtonByName(String ButtonName)
{ //TODO: Add your source code here
 if( WB->Document )
  { TComInterface pDocument; WB->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&pDocument);
    if( pDocument )
     {
      TComInterface pCollection; pDocument->get_all(&pCollection);
       if( pCollection )
       {
        TComInterface pDisp;
         pCollection->item(TVariant(WideString(ButtonName)), TVariant(0), &pDisp);
           if( pDisp )
            { TComInterface pElement; pDisp->QueryInterface(IID_IHTMLElement, (LPVOID*)&pElement);
             if( pElement )
             { pElement->click();}
            }
       }
    }
  }


Как работать со службами(servises)(запустить,остановить,настроить) ?

1. Шаг первый
Подключиться к менеджеру севисов(ServiceControlMenager)
 
SC_HANDLE hSCM = NULL;
DWORD dwAccess=SC_MANAGER_CONNECT;
hSCM = OpenSCManager(NULL /*локальная машина*/,NULL /*текущая база*/,dwAccess);
if(!hSCM){ //Обработка ошибки return; }

флаги доступа могут быть комбинированы между собой.
Существуют следующие:
SERVICE_START - разрешено запускать сервисы
SERVICE_STOP - разрешено останавливать сервисы
DELETE - разрешено удалять сервисы
SERVICE_CHANGE_CONFIG - разрешено конфигурировать сервисы
SERVICE_ALL_ACCESS - включает полные права доступа остальные флаги смотрите в документации.
2. Шаг второй
Необходимо получить внутреннее имя сервиса, по внешнему имени (на примере Firebird Server)
 
char outName[] = "Firebird Server";
DWORD dwBuff = 256;
char *inName = new char[dwBuff];
if(!GetServiceKeyName(hSCM,outName,inName,&dwBuff){ //Обработка ошибки return; }
Внешнее имя можно посмотреть в консоли управлениями сервисами.
Если это ваш сервис, или его внутренне имя вам известно - переходите к следующему шагу.
3. Шаг третий
Подключение к сервису.
SC_HANDLE hService = NULL;
hService = OpenService(hSCM,servName,dwAccess);
if(!hService){ //Обработка ошибки return; }
Флаги доступа см. выше.
4. Шаг четвертый
Конфигурирование.
 
QUERY_SERVICE_CONFIG* lpQSC;
DWORD dwNeeded; lpQSC = ( QUERY_SERVICE_CONFIG)new char[4096];
if(!QueryServiceConfig(hService,lpQSC,4096,&dwNeeded)){ //Обработка ошибки
      return; }
//Обрабатываем полученную инфу
Изменяем конфигурацию - устанавливаем автоматический запуск
 
if(!ChangeServiceConfig(hService,SERVICE_NO_CHANGE,SERVICE_AUTO_START, SERVICE_NO_CHANGE, NULL,NULL,NULL,NULL,NULL,NULL,NULL)){ //Обработка ошибки return; }
5. Шаг пятый
Остановка сервиса 
 
SERVICE_STATUS status_service;
if(!ControlService(hService,SERVICE_CONTROL_STOP,&status_service)){ //Обработка ошибки return; }
6. Шаг шестой
Закрываем все открытые хендлы и освобождаем ресурсы.

 
Как реализовать поиск по HTML-странице? 
 
//in hpp
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include "SHDocVw_OCX.h"
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{ __published: // IDE-managed Components
   TPanel *Panel1;
   TButton *Button1;
   void __fastcall FormCreate(TObject *Sender);
   void __fastcall Button1Click(TObject *Sender);
 private: // User declarations
  TCppWebBrowser *CppWebBrowser;
 public: // User declarations
  __fastcall TForm1(TComponent* Owner); };
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
 
//in cpp ...
#include "mshtmhst.h"
#include "mshtmcid.h"
#include "mshtml.h"
...
#define HTMLID_FIND 1 ... const GUID CGID_IWebBrowser = {0xed016940, 0xbd5b, 0x11cf, {0xba, 0x4e, 0x0, 0xc0, 0x4f, 0xd7, 0x08, 0x16}} ;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 LPDISPATCH lpDispatch = CppWebBrowser->ControlInterface->get_Document();
 if(lpDispatch)
 { IOleCommandTarget* pcmd=NULL;
   if( SUCCEEDED(lpDispatch->QueryInterface(IID_IOleCommandTarget,(void**)&pcmd) ) )
    { pcmd->Exec(&CGID_IWebBrowser, HTMLID_FIND, 0, NULL, NULL);
       pcmd->Release();
     }
   lpDispatch->Release();
 }
}
Как скачать файл из Инета?

1. Вариант 1.
Можно возпользоваться компонентом TIdHTTP с вкладки Indy. Данные компоненты входят в поставку BCB начиная с версии 6.0. Для более ранних версий BCB их можно скачать с оффсайта разработчика: INDY
 
void __fastcall TMainForm::GetBtnClick(TObject *Sender)
{
TFileStream* fs;
int ReadByte=0;
int ReadBlock=0;
int NewReadBlock=ReadBlockEd->Text.ToInt();
bool Done=false;
String File=FileEd->Text;
String URL = URLEd->Text;
IdHTTP1->Request->ProxyPassword = PasswordEd->Text;
IdHTTP1->Request->ProxyServer = "ps.proxy.ru";
IdHTTP1->Request->ProxyPort = 3128;
IdHTTP1->Request->ProxyUsername = UserEd->Text;
//если файл ранее уже закачивался...
if(ini->SectionExists(URL))
 { ReadByte = ini->ReadInteger(URL, "ReadByte", 0);
    Done = ini->ReadBool(URL, "Done", true);
    if(Done) { ShowMessage(String("Файл закачен полностью. Размер - ") + ReadByte + String(" байт.")); return; }
ReadBlock = ini->ReadInteger(URL, "ReadBlock", 0);
ReadBlock = (ReadBlock == NewReadBlock)? ReadBlock:NewReadBlock;
File = ini->ReadString(URL, "File", 0);
TFileStream* fs = new TFileStream(File, fmOpenWrite);
fs->Position = ReadByte;
IdHTTP1->Request->ContentRangeStart = ReadByte;
IdHTTP1->Request->ContentRangeEnd = ReadByte + ReadBlock;
IdHTTP1->Get(URL, fs);
if(IdHTTP1->Request->ContentRangeEnd > IdHTTP1->Response->ContentRangeEnd)
 {
   ini->WriteInteger(URL, "ReadByte", IdHTTP1->Response->ContentLength + IdHTTP1->Response->ContentRangeStart);
   ini->WriteInteger(URL, "ReadBlock", ReadBlock);
   ini->WriteString(URL, "File", File); ini->WriteInteger(URL, "Done", true);
  }
 else
 { ini->WriteInteger(URL, "ReadByte", ReadByte + ReadBlock);
    ini->WriteInteger(URL, "ReadBlock", ReadBlock); //
    ini->WriteString(URL, "File", File);
    ini->WriteInteger(URL, "Done", false);
 }
 delete fs;
}
else 
 { TFileStream* fs = new TFileStream(File, fmCreate);
    fs->Position = ReadByte;
    IdHTTP1->Request->ContentRangeStart = ReadByte;
    IdHTTP1->Request->ContentRangeEnd = ReadByte + NewReadBlock;
    IdHTTP1->Get(URL, fs);
    if(IdHTTP1->Request->ContentRangeEnd > IdHTTP1->Response->ContentRangeEnd)
    {
       ini->WriteInteger(URL, "ReadByte", IdHTTP1->Response->ContentLength + IdHTTP1->Response->ContentRangeStart);
       ini->WriteInteger(URL, "ReadBlock", NewReadBlock);
       ini->WriteString(URL, "File", File);
       ini->WriteInteger(URL, "Done", true);
    }
 else
 {
   ini->WriteInteger(URL, "ReadByte", ReadByte + NewReadBlock); ini->WriteInteger(URL, "ReadBlock", NewReadBlock);
   ini->WriteString(URL, "File", File);
   ini->WriteInteger(URL, "Done", false);
  }
delete fs;
}
}
Вариант 2.
Воспользоваться функциями WinInet. Необходимо включить хедер wininet.h и подключить к проекту файл $(BCB)\LIB\PSDK\wininet.lib
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  char szUrl[] = "URL"; //
  String Page;
  HINTERNET hInternet = InternetOpen("MY AGENT", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  HINTERNET hRequest = InternetOpenUrl(hInternet, szUrl, NULL, 0, 0, 0);
   if(hRequest)
    {
     DWORD dwRead; char szTemp[1024];
     TFileStream* fs = new TFileStream(ExtractFilePath(Application->ExeName) + "\\Page.html", fmCreate);
     while (InternetReadFile(hRequest, (LPVOID)szTemp, 1024, &dwRead))
     {
       if (!dwRead) break; fs->Write(szTemp, dwRead); //
       Page = Page + String(szTemp);
      }
    delete fs;
    }
InternetCloseHandle(hRequest);
InternetCloseHandle(hInternet);
}

Вариант 3.

Непосредственно юзать WinSock API. Например скачиваем страницу и помещаем ее содержимое в Memo.
 
 //Winsock API
 char request[]= "GET / HTTP/1.0\r\n\ Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n\ Accept-Language: ru\r\n\ User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)\r\n\ Host: www.codenet.ru\r\n\r\n"; #define MAX_PACKET_SIZE 4096
void __fastcall TForm1::Button3Click(TObject *Sender)
{
WSADATA ws;
SOCKET s;
sockaddr_in adr;
hostent* hn;
char buff [MAX_PACKET_SIZE];
// Init
if (WSAStartup (0x0101, &ws) != 0)
   {
    // Error
    return;
   }
// Создаем сокет
 if (INVALID_SOCKET == (s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) ) )  { // Error
 return; }
 // получаем ИП
    if (NULL == ( hn = gethostbyname ("www.codenet.ru") ) ) { // Error
     return; }
// Заполгняем структуру
adr.sin_family = AF_INET;
adr.sin_addr.S_un.S_addr = *(DWORD* ) hn->h_addr_list[0];
adr.sin_port = htons (80);
// Устанавливаем соединение
if (SOCKET_ERROR == connect (s, (sockaddr* )&adr, sizeof (adr) ) ) { // Error
return; }
// Посылаем запрос
if (SOCKET_ERROR == send (s, request, strlen(request), 0) ) { // Error
return; }
// Принимаем данные
int len;
do {
      if (SOCKET_ERROR == (len = recv (s, (char *) &buff, MAX_PACKET_SIZE, 0) ) ) return;
     Memo1->Lines->Add(buff);
     }
while (len!=0);
/*int len = recv (s, (char *) &buff, MAX_PACKET_SIZE, 0);
if ( (len == SOCKET_ERROR) || (len == 0) ) { // Error
return ; }
// Выводим полученное
Memo1->Lines->Add(buff);*/
if (SOCKET_ERROR == closesocket (s) ) { // Error
return ; } }

И самый простой вариант.
Воспользоваться ф-ией URLDownloadToFile.
Необходимо включить хедер urlmon.h и подключить к проекту файл $(BCB)\LIB\PSDK\urlmon.lib
 
URLDownloadToFile( 0, "http://www.codenet.ru", "c:\\temp\myfile.html", 0, 0);


Как выравнять текст в ячейках, столбцах, строках StringGrid?

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
 UINT uFormat = DT_LEFT | DT_VCENTER /*| DT_WORDBREAK*/ ;
 //по умолчанию влево
switch (ACol)
 { case 1: uFormat = DT_CENTER | DT_VCENTER ;//по центру
               break;
    case 2:
    case 4: uFormat = DT_RIGHT | DT_VCENTER ;//вправо
              break;
}
StringGrid1->Canvas->FillRect(Rect);
DrawText(StringGrid1->Canvas->Handle,     // handle to device context
StringGrid1->Cells[ACol][ARow].c_str(),      // pointer to string to draw
StringGrid1->Cells[ACol][ARow].Length(), // string length, in characters
&Rect,                  // pointer to structure with formatting dimensions
uFormat // text-drawing flags
);
}
Как при запуске программы узнать путь к exe файлу?

Вариант 1.
 
String Path = ExtractFilePath(ParamStr(0));
 
Вариант 2.
 
AnsiString Path; Path = ExtractFilePath(Application->ExeName);

Как убрать программу из TaskBarа?
 
#pragma hdrstop
void StatusOnTaskBar(HWND hwnd,int status)
{
HRESULT hrc,hr;
ITaskbarList *pITaskbarList;
CoInitialize(NULL);
hrc = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_ITaskbarList, (void**)&pITaskbarList);
if(hrc !=S_OK)
 {MessageBox(NULL,"NoCreate","ITaskbarList",MB_OK);return;}
hr=pITaskbarList->HrInit();
if(hr ==NOERROR)
{
 switch(status)
 { case 0: pITaskbarList->DeleteTab(hwnd); break;
    case 1: pITaskbarList->AddTab(hwnd); break;
    case 2: pITaskbarList->ActivateTab(hwnd); break;
    case 3: pITaskbarList->SetActiveAlt(hwnd); break;
 }
}
pITaskbarList->Release();
CoUninitialize();
}
//main.cpp
//---------------------------------------------------------------------------
#define NO_WIN32_LEAN_AND_MEAN
#include
#pragma hdrstop
#include "TastTestMain.h"
#include "TaskStatus.cpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
 { }
 //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ StatusOnTaskBar(Application->Handle,true); }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender) { StatusOnTaskBar(Application->Handle,false); }
//---------------------------------------------------------------------------

Как сделать втопленную кнопку без дополнительных компонентов как через Windows API (свойство WS_BORDER) ?
Данный код делает все кнопки класса TButton на текущей форме втопленными. Код: DoubleBuffered = true; for (int i=0; i < ControlCount;i++) { if (AnsiString(Controls[i]->ClassName())=="TButton"){ Controls[i]->ControlStyle << csFramed; } } Repaint();

Как програмно прокрутить окно Memo на последнюю строку?

PHP код: Memo1->Perform(EM_LINESCROLL,0,Memo1->Lines->Count); 
 
Как создать Edit для ввода IP адреса, как в свойствах протокола TCP/IP ?
INITCOMMONCONTROLSEX CommCtrl;
CommCtrl.dwSize=sizeof(CommCtrl);
CommCtrl.dwICC=ICC_INTERNET_CLASSES;
if(::InitCommonControlsEx(&CommCtrl))
{
HWND hWndIP=::CreateWindow("SysIPAddress32","IPAddr",
WS_CHILD | WS_TABSTOP | WS_GROUP,10,72,130,24,Handle,0,0,0);
if (hWndIP) ::ShowWindow(hWndIP, SW_SHOW);
}

Как програмно выровнять колонки у ListView (vsReport) ?
SendMessage(ListView1->Handle,LVM_SETCOLUMNWIDTH, 0, LVSCW_AUTOSIZE_USEHEADER);
Как добавить горизонтальный ScrollBar в ListBox / CheckListBox ? 
int Width, MaxWidth=0;
for (int i=0;i < ListBox1->Items->Count;i++){
Width = ListBox1->Canvas->TextWidth(ListBox1->Items->Strings[i]+"x");
if (MaxWidth < Width) MaxWidth = Width;
}
SendMessage(ListBox1->Handle, LB_SETHORIZONTALEXTENT, MaxWidth, 0);

Рекомендую Вам также почитать:


  • Импорт почтовых сообщений из Thunderbird в Outlook
  • Восстановление пароля администратора к сайту
  • Отличие протоколов шифрования WPA от WEP
  • Ускорение завершения работы Windows XP
  • Список операторов Ucoz
  • Исправление кодировки в командной строке
  • Jabber в организации
  • Обход и взлом firewall
  • Делаем сами из динамического IP - статический адрес
  • OpenFire Jabber Server: рассылка сообщений для отдельной группы

  • Загрузить, скачать Программирование, С++Builder всякие полезности бесплатно.
    Скачать С++Builder всякие полезности бесплатно
    С++Builder всякие полезности бесплатно и без регистрации.

    При копировании материала указывайте источник

    С++Builder всякие полезности download free


    Категория: Программирование | Просмотров: 6432 | Добавил: Никипольский-Алексей | Рейтинг: 0.0/0
    Всего комментариев: 0
    avatar
    Мои услуги на Kwork
    Like It


    Copyright Алексей Никипольский © 2009 - 2024