Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры



Выпуск # 214


http://www.kbyte.ru/

 

Новый выпуск!

Здравствуйте!
Очередной выпуск рассылки Kbyte.Ru!

 

Содержание выпуска

Система ЭКСПЕРТ

    Вопрос #000587: Audit

    Вопрос #000582: Активизировать_элемент_формы,_в_процедуре_Form_...

    Вопрос #000580: Visual_Basic_6.0._Как_можно_поместить_картинку_...

    Вопрос #000577: Visual_Basic_6.0._Активизировать_элемент_формы

    Вопрос #000570: Взаимодействие PictureBox и Image

Последнее на форумах

    Перечисление >> Коллекция

    WM 5.0 SDK

    Посоветуйте прогу под смарт

    Можно ли забабахать такое же окошко?

    Строковые выражения

Последние статьи

    Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)

    Работа с SQL – Запросы

    Использование XML.Serialization

    Выбор языка программирования для научных работ (2-я редакция)

    Работаем с MIME

Интересные коды и решения

Юмор на Kbyte.Ru

 

Система ЭКСПЕРТ

 

Система «Эксперт» - уникальная система, которая поможет решить, если не все, то многие Ваши проблемы с программированием и разработкой! Если у Вас есть какой-либо вопрос по программированию или разработке, то Вы всегда можете задать его нашим Экспертам! При этом каких-либо особых действий от Вас не потребуется! Просто отправьте Ваш вопрос на адрес mailto:expert@kbyte.ru, в теме письма укажите тему вопроса, в тексте – сам вопрос, и все! Эксперты дадут Вам ответ в течение 12-24 часов, на тот адрес, с которого Вы отправите вопрос. Все проще простого! Никакой регистрации и заполнение бесконечных форм, никаких наездов, оскорблений и насмешек со стороны гуру, просто спросите и получите ответ ;-)


Вопрос #000587: Audit

Автор вопроса: -=Andrey=- // 28.10.2007 / 14:57

вопрос: как отследить подключение к MS SQL серверу?(имя пользователя в домене Windows и IP-адрес компа пользователя)
описание: пользователь запускает клиентское приложение через Citrix, в базе данных master..sysprocesses в данном случае будет отображаться только информация о sql-имени пользователя,запустившего приложение, адреса самого citrix-сервера, с которого запускалось приложение, а об адресе локального компа и доменном имени юзера ничего нет...



--------------------------------------
Категория: --- SQL Server

Отвечает: Алексей Немиро // 29.10.2007 / 04:09

Здравствуйте, Андрей!

Попробуйте вот так:
001:
002:
003:
004:
005:
CREATE TABLE #tmp ([output] varchar(255) null)
INSERT INTO #tmp exec master..xp_cmdshell 'arp -a'
SELECT count([output]) FROM #t where [output] like '%dynamic%'
DROP TABLE #tmp
SELECT count(DISTINCT net_address) FROM sysprocesses



--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #000582: Активизировать_элемент_формы,_в_процедуре_Form_...

Автор вопроса: Александр Левашов // 24.10.2007 / 20:16

Здравствуйте уважаемые эксперты!

Visual Basic 6.0. Как программно активизировать конкретный элемент формы Text, в процедуре Form_Load()? То есть сразу после загрузки формы.

Спасибо.
Александр Левашов. г.Кострома.

Отвечает: Алексей Немиро // 25.10.2007 / 02:54

Если речь идет о установке фокуса, то в событие Form_Load это сделать
не возможно. Используйте другое событие, либо таймер.

 

Вопрос #000580: Visual_Basic_6.0._Как_можно_поместить_картинку_...

Автор вопроса: Александр Левашов // 24.10.2007 / 14:04

Здравствуйте уважаемые эксперты!

Visual Basic 6.0. Как можно поместить картинку на кнопку.

Спасибо.
Александр Левашов. г.Кострома.

Отвечает: Алексей Немиро // 25.10.2007 / 02:59

Установите свойство Picture, а также style="1" - Graphical.
Еще может понадобиться свойство UseMaskColor и MaskColor, которые
позволяют установить прозрачный цвет картинки.

 

Вопрос #000577: Visual_Basic_6.0._Активизировать_элемент_формы

Автор вопроса: Александр Левашов // 24.10.2007 / 12:28

Здравствуйте уважаемые эксперты!

Visual Basic 6.0. Как программно активизировать конкретный элемент формы Text, чтоб курсор встал на него.

Спасибо.
Александр Левашов. г.Кострома.

Отвечает: Алексей Немиро // 24.10.2007 / 12:40

Здравствуйте, Александр.

Разместите два текстовых поля на форме и одну кнопку, и вставьте следующий код:
001:
002:
003:
Private Sub Command1_Click()
 Text2.SetFocus
End Sub


--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 

Вопрос #000570: Взаимодействие PictureBox и Image

Автор вопроса: "Darck Dragon" // 23.10.2007 / 05:50

Здравствуйте, уважаемые эксперты.
Уже несколько часов ломаю голову над такой вот проблемой:
на форме имеется два графических контролла - PictureBox и Image. Для Image установлено свойство Stretch=true.В обоих элементах одно и тоже изображение, различие - в Image оно целиком видно, правда уменьшено под размеры самого Image, а в PictureBox видна отдельная часть изображения.
Вопрос вот в чём: при наступлении события Image.MouseMove та часть изображения, что находится под курсором должна отображаться в PictureBox. Т.е. как в играх - миникарта и сама карта. Как это сделать?
Заранее огромное спасибо.

--------------------------------------
Категория: --- Visual Basic 5.0/6.0

Отвечает: Алексей Немиро // 23.10.2007 / 06:09

Здравствуйте, Darck Dragon.

Я бы не рекомендовал Вам использовать контрол Image для подобных целей. Лучше используйте только PictureBox.

Создайте новый EXE-проект. На форме (Form) разместите два элемента PictureBox. Визуально у обоих элементов установите свойства:
AutoRedraw = True
ScaleMode = 3- Pixel


В элемент Picture2 загрузите какую-нибудь картинку. Вставьте следующий код, и запустите проект:

001:
002:
003:
Private Sub Form_Load()
 Picture1.PaintPicture Picture2.Picture, 2, 2, 32, 32
End Sub


Получить нарисованное изображение можно через свойство Image.

Что касается получения определенной части изображения, то вы можете выделить любой кусок изображения из оригинала, например:
001:
Picture1.PaintPicture Picture2.Picture, 0, 0, 120, 120, 4, 4, 8, 8


Таким образом, в Picture1 будет нарисован кусок изображения из
Picture2 начиная с 4-го пикселя по X и 4-го пикселя по Y, и
заканчивая 12 (4 + 8) пискселем по X и Y, размером 120x120 пискселей.

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

 


Чтобы задать Ваш вопрос, отправьте его на адрес expert@kbyte.ru

Раздел Эксперт на сайте Kbyte.Ru

Наверх

 

 

Последнее на форумах

Перечисление >> Коллекция | Автор: SEO-Master
Добавлено: 06.11.2007 / 08:17 | ответов: 1 | просмотров: 30

Здравствуйте!
Такой вопрос, у меня есть перечисление, я могу как-нибудь превратить его в коллекцию?

Например:
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
Enum NamesList
 Vasia
 Ivan
 Petr
 Nikolay
 Masha
 Sasha
End Enum

_______________________
Colorized by: Eros.CodeSyntaxColor Engine

Вот из этого надо получить коллекцию, либо массив, чтобы можно было пролистать перечисление циклом.

спсб.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Edlin
Добавлено:06.11.2007 / 10:32
Попробуй

001:
[Enum].GetValues(GetType(NamesList))


Так же у структуры Enum есть метод GetNames. С аналогичным синтаксисом. Может быть он тебе подойдет больше.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


WM 5.0 SDK | Автор: 5acred Phoenix
Добавлено: 04.11.2007 / 22:00 | ответов: 7 | просмотров: 134

Привет всем! У кого-нибудь есть установленный WM 5.0 Smartphone SDK? Сколько весит папка с примерами? Может, выложил бы кто-нибудь, а то примеры нужны, а тянусь 77-метровый SDK у меня нет возможности.. :(

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:05.11.2007 / 03:40
Зачем тебе примеры? :)
Я пробовал кодить под Windows Mobile 6 в Visual Studio 2005, все практически также как и при разработке любого другого проекта, только Framework немного "другой", но принцип тот же :)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: 5acred Phoenix
Добавлено:05.11.2007 / 11:57
Если что, я имею в виду примеры API типа отправки SMS, осущ-ния звонков и прочее. Без этих примеров под рукой достаточно сложно... :)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:05.11.2007 / 12:13
Введение в WM API


API Windows Mobile можно условно разелить на следующие части:
  • WinAPI
  • Memory Manager API – поддержка работы с памятью
  • Power Manager API – поддержка функций энергопотребления
  • File System API
    • EDB API - управление базами данных
    • File IO API - управление файлами и каталогами
    • File Mapping API - управление файлами, проецируемыми в память
    • Storage Manager API - управление хранилищами
  • Networking API
    • Bluetooth - управление устройствами BT
    • CellCore - управление функциями GSM модуля
    • SMS API
    • SIM API
    • Wireless API
    • WinSock API - поддержка сокетов
    • WinInet API - поддержка протокола TC/IP, http, ftp функции
    • Infrared API - поддержка обмена по IrDA
  • Game API (GAPI) - поддержка работы игровых приложений
  • Shell API - поддержка контролов и взаимодействие с GUI
  • ActiveSync API - поддержка соединения с удаленным компьютером
    • Remote API (RAPI) - управление системой через удаленных компьютер
Полную справку по функциям API можно получить из MSDN, ниже мы рассмотрим некоторые функции данных API.

Memory Manager.

Общие положения.
  • Доступная память делится на две части: Storage Memory и Program Memory
  • Память выделяется страницами (для ARM архитектуры по 4Кб )
  • Приложения могут адресовать 4Гб адресного пространства
  • Физическая память, доступная для процесса - 32 Мб
  • Физическая память доступная для одного потока – 1Мб

Получить количество свободной памяти можно с помощью функции:
void GlobalMemoryStatus( LPMEMORYSTATUS lpBuffer );
где lpBuffer – структура описания состояния памяти:

typedef struct _MEMORYSTATUS
{
DWORD dwLength;
DWORD dwMemoryLoad; - процент использования памяти
DWORD dwTotalPhys; - общее кол-во памяти
DWORD dwAvailPhys; - кол-во свободной памяти
DWORD dwTotalPageFile; - кол-во памяти в файле подкачки
DWORD dwAvailPageFile; - кол-во свободной памяти в файле подкачки
DWORD dwTotalVirtual; - размер памяти процесса
DWORD dwAvailVirtual; -свободная память процесса
} MEMORYSTATUS, *LPMEMORYSTATUS;

Память, как и все остальные ресурсы. Имеет обыкновение заканчиваться.
Сущетвует 3 категории нехватки памяти:
LowMemory – свободно 256Кб памяти. Система при этом рассылает приложениям сообщение WM_HIBERNATE. Приложение в ответ на сообщение должно освободить память, выделенную функцией VirtaulAlloc, освободить неиспользуемые ресурсы GDI.
VeryLowMemory – свободно 160Кб памяти. Система рассылает приложениям сообщение WM_CLOSE. В ответ на это сообщение, приложения должны завершить работу и полность освободить память и ресурсы GDI.
CriticalMemory – свободно меньше 32Кб. В этом состоянии запуск программ невозможен. Система показывает стандартный диалог нехватки памяти и перезагружается.

Иногда программе для работы нужно больше памяти, чем свободно. В этом случае можно воспользоваться функцией:
BOOL SHCloseApps( DWORD dwMemNeed );
где, dwMemNeed - объем памяти, который необходимо освободить.
При этом система посылает остальным приложениям сообщение WM_CLOSE до тех пор, пока не будет доступно необходимое количество памяти (если это возможно вообще). Если это не возможно по каким-то причинам, то функция вернет false, и придется использовать столько памяти, сколько доступно, или пойти на ухищрения типа memory-mapped files.

Память делится между памятью программ (Program Memory) и памятью файлов (Storage Memory). В настройках системы можно посмотреть и установить распределение использования память вручную:


Но есть способ сделать это программно/ Для этого существуют недокументированные функции из core.dll:
GetSystemMemoryDivision(LPDWORD,LPDWORD,LPDWORD);
SetSystemMemoryDivision(DWORD);

Получение текущего распределения памяти:
BOOL GetSystemMemoryDivision(
LPDWORD pmemStorage,
LPDWORD pmemRAM,
LPDWORD pmemTotal);
где
pmemStorage – размер памяти, отданной под хранилище
pmemRAM - размер памяти отданной под программы
pmemTotalобщий размер памяти

Установка распределения памяти:
DWORD SetSystemMemoryDivision(DWORD memStorage);
где
memStorage - размер памяти, выделяемый под хранилище, в страницах памяти

Возвращаемое значение:
0 – значение установлено успешно
1- значение будет установлено после перезагрузки
2,3 – ошибка (м.б. функция не поддерживатеся)

Пример использования данных функций:
typedef
BOOL (stdcall *GetSystemMemoryDivisionProc)(LPDWORD,LPDWORD,LPDWORD)
typedef
DWORD (stdcall *SetSystemMemoryDivisionProc)(DWORD);

void ReadMemoryDivision()
{
HINSTANCE hCoreDll = LoadLibrary(_T("coredll.dll"));
GetSystemMemoryDivisionProc procGet = (GetSystemMemoryDivisionProc)GetProcAddress(
hCoreDll, _T("GetSystemMemoryDivision"));
DWORD dwStoragePages;
DWORD dwRamPages;
DWORD dwPageSize;
BOOL bResult = procGet(&dwStoragePages, &dwRamPages, &dwPageSize);
FreeLibrary(hCoreDll);
}

void SetMemoryDivision()
{
int nStoragePages = 30 * 256 ; // 30 Mb
HINSTANCE hCoreDll = LoadLibrary(_T("coredll.dll"));
SetSystemMemoryDivisionProc procSet =
(SetSystemMemoryDivisionProc) GetProcAddress(
hCoreDll, _T("SetSystemMemoryDivision"));
DWORD dwResult = procSet(nStoragePages);
FreeLibrary(hCoreDll);
}

Как было сказано выше, выделение памяти в системе происходит кусками, кратными размеру страницы. Это следует учитывать в приложениях, активно использующих динамическую память.
Размер страницы памяти можно определить с помощью функции GetSystemInfo():
void GetSyetemInfo(LPSYSTEM_INFO lpSystemInfo);
структура LPSYSTEM_INFO описывает характеристики процессора, из которых и можно получит интересующее нас значение:


typedef struct _SYSTEM_INFO { 
 union { DWORD dwOemId;  struct { WORD wProcessorArchitecture; // тип архитектуры процессора  WORD wReserved; }; };
DWORD dwPageSize; // размер страницы памяти LPVOID lpMinimumApplicationAddress; // адрес начала области памяти для приложений  LPVOID lpMaximumApplicationAddress; // адрес конца области памяти для приложений DWORD dwActiveProcessorMask;  DWORD dwNumberOfProcessors; // количество процессоров в системе  DWORD dwProcessorType; // тип процессора DWORD dwAllocationGranularity; WORD wProcessorLevel; WORD wProcessorRevision; }
SYSTEM_INFO, *LPSYSTEM_INFO;
Эта же функция, совместно с функцией GetVersionInfoEx может использоваться для л/р “Просмотр информации о системе”


Power Manager.

Функция получения состояния основной и дополнительной батарей:

DWORD GetSystemPowerStatusEx2( PSYSTEM_POWER_STATUS_EX2 pSystemPowerStatusEx2,
DWORD dwLen,
BOOL fUpdate );

Самый важный параметр функции – структура SYSTEM_POWER_STATUS_EX2:

typedef struct _SYSTEM_POWER_STATUS_EX2
{
BYTE ACLineStatus; - состояние внешнего питания
BYTE BatteryFlag; - состояние основной батареи
BYTE BatteryLifePercent; - процент зарядки основной батареи
DWORD BatteryLifeTime; - время, на которое хватит заряда
DWORD BatteryFullLifeTime; - время, на которое хватит полной батареи
BYTE BackupBatteryFlag; - состояние резервной батареи
BYTE BackupBatteryLifePercent; - процент заряда резервной батареи
DWORD BackupBatteryLifeTime; - время остатка заряда резервной батареи
DWORD BackupBatteryFullLifeTime; - полное время резервной батареи
Физические характеристики батареи:
DWORD BatteryVoltage; - емкость батреи (mV)
DWORD BatteryCurrent; - ток батареи (mA)
DWORD BatteryAverageCurrent; - средний ток
DWORD BatteryAverageInterval; - интервал изменения тока
DWORD BatterymAHourConsumed; - емкость батареи в mAH
DWORD BatteryTemperature; - температура батареи
DWORD BackupBatteryVoltage; - емкость резервной батареи
BYTE BatteryChemistry; - тип батареи (LION, NiCD, NIMN… )
} SYSTEM_POWER_STATUS_EX2

Получение таймаутов выключения девайса

таймаут выключения при использовании батареи
SystemParametersInfo(SPI_GETBATTERYIDLETIMEOUT,0,&batIdle,0);
таймаут выключения при использовании внешнего питания
SystemParametersInfo(SPI_GETEXTERNALIDLETIMEOUT,0,&acIdle,0);

Выключение устройства:
keybd_event(VK_OFF,0,KEYEVENTF_SILENT,0);
sleep(60);
keybd_event(VK_OFF,0,KEYEVENTF_SILENT | KEYEVENTF_KEYUP,0);

Перезагрузка устройства:
#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)

extern "C" __declspec(dllimport) BOOL KernelIoControl(
DWORD dwIoControlCode,
LPVOID lpInBuf,
DWORD nInBufSize,
LPVOID lpOutBuf,
DWORD nOutBufSize,
LPDWORD lpBytesReturned);

BOOL ResetPocketPC()
{
return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
}

Работа с базами данных.
Windows Mobile содержит средства для работы с базами данных. Они сосредоточены в специальном CEDB API.
Ниже представлен список функций этого API.

CeAddDatabaseProps

Добавление свойства в существующую БД.

CeBeginTransaction

Функция начала транзакции

CeCreateDatabaseEx2

Функция создания новой БД

CeCreateSession

Функция начала новой сессии

CeDeleteDatabase

Функция удаления БД

CeDeleteRecord

Функция удаления записи

CeEndTransaction

Функция завершения транзакции

CeEnumDBVolumes

Функция перечисления созданных БД по GUID.

CeFindFirstDatabaseEx, CeFindNextDatabaseEx

Функции поиска БД

CeFlushDBVol

Функция сброса внутренних буферов БД

CeGetDatabaseSession

Функция получения открытых сессий для открытой БД.

CeGetDBInformationByHandle

Функция возвращает информацию о открытой БД по ее хендлу.

CeMountDBVol, CeMountDBVolEx

Функции монтируют БД из файла .

CeOpenDatabaseInSession

Функция открытия БД

CeOpenStream

Функция создания потока чтения данных из БД.

CeReadRecordPropsEx

Функция чтения свойств записи .

CeSeekDatabase , CeSeekDatabaseEx

Функция установки указателя на запись .

CeStreamRead

Функция чтения данных из потока БД

CeStreamSaveChanges

Функция записи изменения в БД

CeStreamSeek

Функция позиционирования внутри потока БД

CeStreamSetSize

Функция возвращает размер данных в потоке

CeStreamWrite

Функция записи данных в поток

CeUnmountDBVol

Функция размонтирования БД


Проще всего показать работу с базами данных на примере.
Открытие базы данных осуществляется с помощью пару функций CeCreateDataBase и CeOpen

SORTORDERSPEC sos[n]; // параметры сортировки
sos[0].propid = PROP_LPWSTR;
sos[0].dwFlags = 0;
CEOID CeOID = CeCreateDatabase(szBaseName,dwNewDBType, 0, sos);
HANDLE hNewDB = CeOpenDatabase(&CeOID, szBaseName, 0, 0, hWnd);

Позиционирование на определенную запись осуществляется с помощью функции CeSeekDatabase:
CeSeekDatabase(
hNewDB, // хендл таблицы
CEDB_SEEK_BEGINNING, // условие позиционирования
0, // номер записи в базе данных или указатель на значение
&dwIndex); // индекс записи

Прочитать запись можно с помощью функции CeReadRecordProps:
CeReadRecordProps (
hNewDB, // хендл таблицы
CEDB_ALLOWREALLOC, // флаг управления памятью
&wProps, // количество полей в записи
NULL, // перечень полей
&(LPBYTE)pBuff, // буффер, куда сложены данные
&cbData); // размер буфера

Возвращаемые данные складываются в массив структур:
typedef struct _CEPROPVAL { 
 CEPROPID propid;
// тип поля (строка, целое, дата, BLOB и т.д.) WORD wLenData; // длина данных  WORD wFlags; // флаги CEVALUNION val; // сами данные } CEPROPVAL;
Получить значение можно так :
PCEPROPVAL pRecord = (PCEPROPVAL)pBuff;
szValue = pRecord->val.lpwstr;

Пример чтения всех записей таблицы:
while(CeSeekDatabase(hNewDB, CEDB_SEEK_BEGINNING, i, &dwIndex)!=0)
{
CeReadRecordProps (hNewDB, CEDB_ALLOWREALLOC, &wProps, NULL, &(LPBYTE)pBuff, &cbData);
PCEPROPVAL pRecord = (PCEPROPVAL)pBuff;
szValue = pRecord->val.lpwstr;
OutputDebugString(szValue);
}

Для записи поля используется функция CeWriteRecordProps()
Пример записи для таблицы с двумя полями:
// заполним буфер данными
CEPROPVAL NewRecProps[2];
// первое поле
NewRecProps[0].propid = PROP_LPWSTR;
NewRecProps[0].val.lpwstr = szText;
// второе поле
NewRecProps[1].propid = PROP_LPWSTR;
NewRecProps[1].val.lpwstr = szText2;
// запишем
CeWriteRecordProps(
hNewDB, // хендл таблицы
0, // позиция
2, // кол-во полей в записи
NewRecProps); // данные

И наконец, как удалить запись. Для этого можно воспользоваться функцией CeDeleteRecord.
При этом мы должны быть спозиционированы на эту запись:

CEOID oid = CeSeekDatabase (hNewDB, CEDB_SEEK_BEGINNING, RecIndex, &dwIndex);
CeDeleteRecord (hNewDB, oid);


Remote API (RAPI)
RAPI предназначено для управления девайсом с Windows Mobile с помощью удаленного подключения через ActiveSync.
В состав RAPI входят функции для:
  1. Операций с реестром
  2. Операций с базами данных
  3. Операций с файлами и каталогами
  4. Операции по получению системной информации
  5. Удаленный запуск функций из dll

Shell API
Shell API предоставляет различные функции для взаимодействия GUI с системой.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: Алексей
Добавлено:05.11.2007 / 12:15
Как позвонить (программно)?
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
#include "phone.h"


LRESULT MakeCall(WCHAR phoneno[255])
{

PHONEMAKECALLINFO phoneinfo;
int result;

//phoneinfo.dwFlags=PMCF_PROMPTBEFORECALLING;
phoneinfo.dwFlags=PMCF_DEFAULT; //
phoneinfo.pszDestAddress=phoneno; //
phoneinfo.pszAppName=0; //
phoneinfo.pszCalledParty = null; //
phoneinfo.pszComment=0;
phoneinfo.cbSize=sizeof(phoneinfo);

result=(PhoneMakeCall(&phoneinfo));
return 0;
}

Colorized by: Eros.CodeSyntaxColor Engine

Как соединиться с интернетом, как прочитать ветку реестра, и как запустить файл
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
wchar_t rezerva[1024];
HKEY Regentry;
DWORD dwSize=1020, dwType;
SHELLEXECUTEINFO sei = {0};

RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Apps\\mGSLab.com mChat", 0, KEY_QUERY_VALUE, &Regentry);
RegQueryValueEx(Regentry, L"InstallDir" , null, &dwType, (unsigned char*)&rezerva, &dwSize);

CONNMGR_CONNECTIONINFO sConInfo;
HANDLE phWebConnection;
DWORD pdwStatus;

memset(&sConInfo, 0, sizeof(CONNMGR_CONNECTIONINFO));
sConInfo.cbSize = sizeof(CONNMGR_CONNECTIONINFO);
sConInfo.dwParams = CONNMGR_PARAM_GUIDDESTNET;
sConInfo.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;
sConInfo.dwFlags = 0;
sConInfo.bExclusive = false;
sConInfo.bDisabled = false;
sConInfo.guidDestNet = IID_DestNetInternet;
ConnMgrEstablishConnectionSync(&sConInfo, &phWebConnection, 60000,&pdwStatus);

Sleep(3000);

sei.cbSize = sizeof(SHELLEXECUTEINFO);
wcscat(rezerva,L"\\mChat.exe");
sei.lpFile = rezerva;
ShellExecuteEx(&sei);

return 0;
}

Colorized by: Eros.CodeSyntaxColor Engine

Отправка SMS
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
#include <sms.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void SendSMS(bool bSendConfirmation, LPCTSTR lpszRecipient, LPCTSTR lpszMessage)
{


SMS_HANDLE smshHandle;
SMS_ADDRESS smsaDestination;
static TEXT_PROVIDER_SPECIFIC_DATA tpsd;
SMS_MESSAGE_ID smsmidMessageID;


LoopS:
// try to open an SMS Handle
if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, null)))
{
// MessageBox(NULL, TEXT ( "Не могу открыть SMS handle" ), TEXT ( "Ошибка!!!" ), MB_OK | MB_ICONERROR);
// return;

Sleep(50);
goto LoopS;
}

stop:
// Create the destination address
smsaDestination.smsatAddressType = SMSAT_INTERNATIONAL;
_tcsncpy(smsaDestination.ptsAddress, lpszRecipient, SMS_MAX_ADDRESS_LENGTH);

// Set up provider specific data
tpsd.dwMessageOptions = bSendConfirmation ? PS_MESSAGE_OPTION_STATUSREPORT : PS_MESSAGE_OPTION_NONE;
tpsd.psMessageClass = PS_MESSAGE_CLASS1;
tpsd.psReplaceOption = PSRO_NONE;
tpsd.dwHeaderDataSize = 0;

SmsSendMessage(smshHandle, // 1
null, // 2
&smsaDestination, // 3
null, // 4
(PBYTE) lpszMessage, // 5
_tcslen(lpszMessage) * sizeof(WCHAR), // 6
(PBYTE) &tpsd, // 7
sizeof(TEXT_PROVIDER_SPECIFIC_DATA), // 8
SMSDE_OPTIMAL, // 9
SMS_OPTION_DELIVERY_NONE , // 10
&smsmidMessageID); // 11

if ( smsmidMessageID == 0 )
{
// MessageBox(NULL, TEXT ( "Ваше сообщение не удалось отправить" ), TEXT ( "Ошибка" ), MB_OK);

goto stop;
}
else
// MessageBox(NULL, TEXT ( "Ваше сообщение удачно отправлено" ), TEXT ( "Удача!!!" ), MB_OK);

VERIFY(SUCCEEDED(SmsClose(smshHandle)));
}

Colorized by: Eros.CodeSyntaxColor Engine

Как получить уровень GSM сигнала?
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
065:
066:
067:
068:
069:
070:
071:
072:
073:
074:
075:
076:
077:
078:
079:
080:
081:
082:
083:
084:
085:
086:
087:
088:
089:
090:
091:
092:
093:
094:
095:
096:
097:
098:
099:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
#include <windows.h>
#include <tapi.h>
#include <tsp.h>

#define TAPI_API_LOW_VERSION 0x00020000
#define TAPI_API_HIGH_VERSION 0x00020000

DWORD GSMSignalStrength=260;
HLINE hPhoneHandler=0;
HLINEAPP hPhoneAppHandler=0;

DWORD GetTSPLineDeviceID(const HLINEAPP hLineApp,
const DWORD dwNumberDevices,
const DWORD dwAPIVersionLow,
const DWORD dwAPIVersionHigh,
const TCHAR* const psTSPLineName)
{
DWORD dwReturn = 0xffffffff;
for(DWORD dwCurrentDevID = 0; dwCurrentDevID < dwNumberDevices; dwCurrentDevID++)
{
DWORD dwAPIVersion;
LINEEXTENSIONID LineExtensionID;
if(0 == lineNegotiateAPIVersion(hLineApp, dwCurrentDevID,
dwAPIVersionLow, dwAPIVersionHigh,
&dwAPIVersion, &LineExtensionID))
{
LINEDEVCAPS LineDevCaps;
LineDevCaps.dwTotalSize = sizeof(LineDevCaps);
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, &LineDevCaps))
{
BYTE* pLineDevCapsBytes = new BYTE[LineDevCaps.dwNeededSize];
if(0 != pLineDevCapsBytes)
{
LINEDEVCAPS* pLineDevCaps = (LINEDEVCAPS*)pLineDevCapsBytes;
pLineDevCaps->dwTotalSize = LineDevCaps.dwNeededSize;
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, pLineDevCaps))
{
if(0 == _tcscmp((TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps->dwLineNameOffset),
psTSPLineName))
{
dwReturn = dwCurrentDevID;
}
}
delete[] pLineDevCapsBytes;
}
}
}
}
return dwReturn;
}


bool RegisterPhoneFunctions(HINSTANCE hinst)
{
DWORD dwNumDevs;
DWORD dwAPIVersion = TAPI_API_HIGH_VERSION;
LINEINITIALIZEEXPARAMS liep;
// DWORD dwExtVersion;
LPBYTE pLineGeneralInfoBytes = null;
DWORD dwTAPILineDeviceID;
const DWORD dwMediaMode = LINEMEDIAMODE_DATAMODEM | LINEMEDIAMODE_INTERACTIVEVOICE;

liep.dwTotalSize = sizeof(liep);
liep.dwOptions = LINEINITIALIZEEXOPTION_USEEVENT;

if (lineInitializeEx(&hPhoneAppHandler, 0, 0, TEXT("VobisStart"),
&dwNumDevs, &dwAPIVersion, &liep))
{
return false;
}
dwTAPILineDeviceID = GetTSPLineDeviceID(hPhoneAppHandler, dwNumDevs,
TAPI_API_LOW_VERSION,
TAPI_API_HIGH_VERSION,
CELLTSP_LINENAME_STRING);

if (0xffffffff == dwTAPILineDeviceID)
{
if (hPhoneAppHandler) lineShutdown(hPhoneAppHandler);
return false;
}

// now try and open the line
if(lineOpen(hPhoneAppHandler, dwTAPILineDeviceID,
&hPhoneHandler, dwAPIVersion, 0, 0,
LINECALLPRIVILEGE_MONITOR , 0, 0))
{
if (hPhoneAppHandler) lineShutdown(hPhoneAppHandler);
return false;
}
return true;
}

void UpdatePhoneStatus()
{
LINEDEVSTATUS stat;
if(!lineGetLineDevStatus(hPhoneHandler,&stat))
MessageBox(0,TEXT("error"),TEXT("GSM signal"),MB_OK);
GSMSignalStrength=0;
wchar_t str[20]={0};
_itow(stat.dwSignalLevel,str,16);
MessageBox(0,str,TEXT("GSM signal"),MB_OK);
}

void UnRegisterPhoneFunctions()
{
if (hPhoneHandler) lineClose(hPhoneHandler);
if (hPhoneAppHandler) lineShutdown(hPhoneAppHandler);
}

Colorized by: Eros.CodeSyntaxColor Engine


поиск рулит :)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 5 | Автор: 5acred Phoenix
Добавлено:05.11.2007 / 12:44
Ммм... Здорово :-)
Тогда ещё вопрос: смотрю все пишут на eMbedded C++. А вижуалстудийный C++ подойдёт? :-)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 6 | Автор: Алексей
Добавлено:05.11.2007 / 12:51
А вижуалстудийный C++ подойдёт?

Полагаю, что подойдет :)

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 7 | Автор: 5acred Phoenix
Добавлено:05.11.2007 / 15:21
Ух ты, дас ист фантастиш! :-))
Thanks a lot.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Посоветуйте прогу под смарт | Автор: 5acred Phoenix
Добавлено: 04.11.2007 / 14:04 | ответов: 1 | просмотров: 41

Привет всем!

Посоветуйте, пожалуйста, прогу под смарт с Windows Mobile 5, чтобы можно было смс/email прятать под пароль.
Очень нужно в шпионских целях :)

Заранее спасибо.

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:04.11.2007 / 14:14
Посмотри на http://4pda.ru или http://mypcc.ru

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Можно ли забабахать такое же окошко? | Автор: 5acred Phoenix
Добавлено: 02.11.2007 / 11:29 | ответов: 3 | просмотров: 107

Доброе время суток!

В аттаче — скриншот главного окошка миранды какой-то там сборки. Окошко забабахано так, будто это Виста, т. е. тень вокруг всего окошка, полупрозрачные края (причём прозрачность разного уровня). Как такое сделать? :)

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:03.11.2007 / 04:49
Если это не под вистой, то наверное можно делать скрин рабочей области, резать его и уже рисовать в окне миранды :)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: 5acred Phoenix
Добавлено:03.11.2007 / 21:00
Неа, это под ХРенью :)
Думаю, тут хитрее...

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:04.11.2007 / 14:02
Неа, это под ХРенью :)
Думаю, тут хитрее...

Как найдешь ответ на этот вопрос, поделишься с нами :)

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Строковые выражения | Автор: LIS
Добавлено: 02.11.2007 / 07:29 | ответов: 6 | просмотров: 141

Друзья помогите...
по замыслу есть строковое выражение, Например "12 А", и нада сделать так чтобы он разделил цифры от букв ....
у меня получился такой вот код
001:
002:
003:
004:
005:
006:
007:
008:
Private Sub Command1_Click()
Dim g As String
g = Text1.Text
d = Val(g)
h = Trim(Right(g, Len(g) - Len(d)))
End Sub

Colorized by: Eros.CodeSyntaxColor Engine


мож есть что то по проще???

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: LIS
Добавлено:02.11.2007 / 07:34
Да .... и как сделать так чтобы если, например выражение 12 "а", а при вывоеде на экран появилось 12 а, без знака кавычел....

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: Алексей
Добавлено:02.11.2007 / 07:51
мож есть что то по проще???

Есть.
Проект (Project) -> Ссылки (Reference) -> Microsoft VBScript Regular Expressions

Код:
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
Dim myRegEx As New VBScript_RegExp_55.RegExp
myRegEx.Pattern = "([0-9]+)\s{0,}([A-Za-zА-Яа-яЁё]+)"
myRegEx.MultiLine = False
myRegEx.Global = True
myRegEx.IgnoreCase = True
 
Dim myMatches As MatchCollection
Set myMatches = myRegEx.Execute(Text1.Text)
Dim cm As Match
For Each cm In myMatches
 List1.AddItem cm.SubMatches(0)
 List2.AddItem cm.SubMatches(1)
Next cm

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


Для работы примера нужно разместить на форме TextBox, и два ListBox.

Да .... и как сделать так чтобы если, например выражение 12 "а", а при вывоеде на экран появилось 12 а, без знака кавычел....

надо их просто учесть в регулярном выражении.

--
С наилучшими пожеланиями,
Немиро Алексей http://aleksey.nemiro.ru/

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:02.11.2007 / 07:58
Ссылка на пример: http://kbyte.ru/code/Show.aspx?id=49

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: LIS
Добавлено:02.11.2007 / 08:32
как я понимаю "cm.SubMatches(0)" данное выражение является числовым???
а прбелы он тоже учитывает???

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 5 | Автор: Алексей
Добавлено:02.11.2007 / 08:41
как я понимаю "cm.SubMatches(0)" данное выражение является числовым???
а прбелы он тоже учитывает???

Да, 0 - это первое найденное выражение, 1 - второй и т.д.
Пробелы учтет, если его об этом попросить :)
В данном случае - \s{0,} говорит о том, что пробела может и не быть.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 6 | Автор: Neco
Добавлено:02.11.2007 / 09:47
заметка
\s{0,} - эквивалент \s* "ни одного, один или несколько"
\s{1,} - эквивалент \s+ "один или несколько"
есть ещё по-моему \s? - равнозначно с \s{0,1} - "либо один, либо нет"

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Наверх

 

Последние статьи

Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)
Автор: Немиро Алексей | добавлено: 27.07.2007 / 14:01 | просмотров: 1281

В данной статье речь пойдет о том, как можно программно заполнить и отправить Web-форму, а также получить результат с использованием довольно простых классов - HttpWebRequest и HttpWebResponse.

Работа с SQL – Запросы
Автор: Хабибулин А. (aka Bille Gates) | добавлено: 22.07.2007 / 04:43 | просмотров: 2326

В данной статье рассмотрены часто используемые SQL-запросы и приведены примеры их использования.

Использование XML.Serialization
Автор: Немиро Алексей | добавлено: 19.07.2007 / 15:38 | просмотров: 627

В данном обзоре речь пойдет об использование XML.Serialization в .NET и ее применении на примере сохранения и считывания настроек программы с использованием синтаксиса языка Visual Basic .NET.

Выбор языка программирования для научных работ (2-я редакция)
Автор: Юдин С. Ю. | добавлено: 15.03.2007 / 02:49 | просмотров: 2659

Идея написания этой статьи возникла после того, как на одном из сайтов по физике http://physics.nad.ru/aniboard/messages/291.html я обнаружил интересный алгоритм моделирования движения тела в поле постоянной напряженности по различным направляющим. Вернее, меня заинтересовал не весь алгоритм, т.к. основа их всех одна (принцип Даламбера, если не считать квазиалгоритма с применением уравнений Лагранжа 2-го рода) и различаются они только способом определения реакций в месте соприкосновения тел. ...

Работаем с MIME
Автор: Немиро Алексей | добавлено: 29.11.2006 / 14:46 | просмотров: 2519

Не так давно мне пришлось немного поработать MIME (Multipurpose Internet Mail Extension) - это стандарт почтовых сообщений, в РуНете (Russian Internet) я не нашел нормального описания спецификации MIME, и посему решил написать небольшую статейку на эту тему. В данной статье вы узнаете об основных особенностях и стандартах MIME, а также научитесь «читать» MIME с использованием синтаксиса языка Visual Basic .NET 2005.

 

Статьи на Kbyte.Ru

Наверх

 

Интересные коды и решения

Как создать новую папку (каталог)?
Дата добавления: 31.07.2006 / 12:36 | просмотров: 1695 | платформа: VB

Как очистить корзину?
Дата добавления: 24.03.2007 / 11:35 | просмотров: 537 | платформа: VB .NET

Как получить имя пользователя? (с использованием API)
Дата добавления: 24.03.2007 / 12:19 | просмотров: 592 | платформа: VB .NET

Как узнать IP-адрес посетителя?
Дата добавления: 01.09.2006 / 12:20 | просмотров: 1379 | платформа: ASP

Как сделать Label с тенью?
Дата добавления: 16.08.2006 / 23:42 | просмотров: 980 | платформа: VB

Проверка существования директории
Дата добавления: 31.07.2006 / 12:41 | просмотров: 1742 | платформа: VB

Использование включаемых файлов
Дата добавления: 01.08.2006 / 11:40 | просмотров: 873 | платформа: ASP

Как отправить файл в корзину? (!API!)
Дата добавления: 24.03.2007 / 12:23 | просмотров: 745 | платформа: VB .NET

Как изменить фон в каждом элементе списка?
Дата добавления: 31.07.2006 / 14:13 | просмотров: 1291 | платформа: ASP .NET (VB)

Как преобразовать десятичное число в восьмиричное?
Дата добавления: 16.08.2006 / 20:36 | просмотров: 884 | платформа: VB

 

Универсальные коды на Kbyte.Ru

Наверх

 

Юмор на Kbyte.Ru

Разговаривают два активных пользователя Интернета:
- Ну, как дела?
- Да как тебе сказать... Все нормально вроде, вот только пальцы болят...
- А с чего это вдруг?
- Да вчера с друзьями в чате встретился, так всю ночь песни орали...

 

Рейтинг: 151
Всего голосов: 241
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

- Простите, я задавил вашу кошку. Готов заплатить, или
заменить.
- Хмм... Заменить, говорите? А мышей ловить умеете?

 

Рейтинг: 356
Всего голосов: 532
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Она всю жизнь была верна только "Джонсону и Джонсону" - от первого памперса до последнего тампакса.

 

Рейтинг: 116
Всего голосов: 156
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Играю в DOOM по переписке.

 

Рейтинг: 179
Всего голосов: 285
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Марьиванна:
- Здесь мы видим, что крокодил отложил яйца... Кто знает: зачем?
Вовочка:
- Старый он уже... Не нужны они ему...

 

Рейтинг: 82
Всего голосов: 134
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

На Новый Год все одели разные маски: кто зайчика, кто лисички...
И только сисадмин одел свою любимую: 255.255.255.0

 

Рейтинг: 452
Всего голосов: 597
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Пpогpаммисты любят домашних животных. Особеннyю пpивязанность y них вызывают мыши. О мышах заботятся, содеpжат их в домиках и отпyскают пастись только на ковpики. Хотя есть отдельные индивидyyмы, котоpые неpовно дышат к семействy кошачьих. Вот такой диалог пpоизошел междy двyмя пpогpаммистами (не бyдем показывать на них пальцем) на днях:

- Слышь, y тебя кошка есть?
- Есть.
- С собой?

 

Рейтинг: 168
Всего голосов: 252
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

"Полной чушью, бредом и несусветной ахинеей" назвал министр Иванов заявления некоторых блоггеров о том, что он не знает никаких других слов, кроме "полная чушь", "бред" и "ахинея".

 

Рейтинг: 181
Всего голосов: 298
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Не компутерная:
История короткая, но правдивая. Итак. Чехословакия. 1987 год. Советская Прага. Мои знакомые, поднакопив денег, всё-таки решаются купить себе нА пол ковер. Прошлись по магазинам, но ничего подходящего не попадалось. В конце концов, они зашли в какой-то маленький магазинчик. В магазинчике было море ковров, но лежали они друг на дружке такими своеобразными стопками, что ли. Покупатели отгибали края – смотрели на узор на краях ковров. Таким способом они всё-таки выбрали подходящий узор, заплатили, как им показалось, небольшую для ковра денежку и попросили, что бы им эту покупку доставили на дом, дав свой адрес (у них уже тогда была служба доставки!). Позвали знакомых, что бы похвастаться такой замечтательной покупкой. Привезли товар, причем грузчики как-то подозрительно улыбались. Начали разворачивать и…хозяева дико ужаснулись, а гости впали в транс, плавно переходящий в эйфорию. В самом центре ковра красовалась немеренная белая башка тов. Ленина. По правде на весь ковер, кроме краев. Дальше из цикла «Что делать?». На пол положить нельзя, если ходить по вождю – приговор, могут настучать активисты. На стенку, никто из уважающих себя чехов, вешать, без приказа партии, не станет. Пришлось расстелить и сдвинуть почти всю мебель в середину комнаты, прямо на лысину пролетарию. Так они жили две недели, но потом нашелся один умник, и посоветовал перевернуть ковер на другую сторону – «Кое чьим лицом вниз» , значит. А через два годика система советов прохудилась и обвалилась. С дедушкой Лениным можно было делать что угодно, вплоть до…[BEEP], что и было сделано. Э=0).

З.Ы. Ковер нельзя было вернуть назад в магазин, так как это сразу бы приобрело политическую или другую окраску.
User Unknown

 

Рейтинг: 173
Всего голосов: 258
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Журнал "Бизнес Ик" опубликовал список ста самых успешных бизнесменов России, он называется "Гоп сто".

 

Рейтинг: 196
Всего голосов: 293
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Весь юмор на Kbyte.Ru

Наверх


Выпуск подготовил: R-KDR-19826

Редактор: Немиро Алексей

Copyright (c) Nemiro AS, 2005-2007


В избранное