[web] Выдать картинку-принтскрин по урлу сайта.
Честно говоря, не вижу проблемы. В Борланде, например, это делается стандартными средствами.
Да в принципе, и этих средств не надо. Делаешь форк "explorer http://url.domain.arpa" и снимаешь скриншот любым стандартным методом работы с графикой.
Да в принципе, и этих средств не надо. Делаешь форк "explorer http://url.domain.arpa" и снимаешь скриншот любым стандартным методом работы с графикой.
это что такое?
я просто хочу, что бы скрипт не на локале был, а на серваке...
Соответственно наверно подойдут только средства ВЕБ разработки...
я просто хочу, что бы скрипт не на локале был, а на серваке...
Соответственно наверно подойдут только средства ВЕБ разработки...
а зачем?
Тогда свой броузер писать 

ну вот есть такая идея...
Интересно стало....
А браузер то писать зачем ?
Интересно стало....
А браузер то писать зачем ?
ну "сервак" может и под windows жить, а там и IE тут как тут 

А браузер то писать зачем ?в случае, если только ср-вами ВЕБ разработки

какая разница-то? Что тебе мешает писать на серваке с использованием форков и графических библиотек?
А почему именно средства WEB разработки?
По сути тебе нужна программа, запускающая браузер, вызывающая URL и делающая принтскрин. Для этого WEB юзать не надо )
Если она работает с сервера, то тебе просто оболочку написать надо, которая будет эту программу дергать
По сути тебе нужна программа, запускающая браузер, вызывающая URL и делающая принтскрин. Для этого WEB юзать не надо )
Если она работает с сервера, то тебе просто оболочку написать надо, которая будет эту программу дергать
под браузером понимаеццо рендерер html'я в растр.
у него, наверное, не свой, а какой-нить халявный сервак 

Warning: mysql_connect: Access denied for user: '209.68.1.162' (Using password: YES) in /usr/www/users/dvine/danvine.com/iecapture/inc/global.inc.php on line 45не пашет
Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/dvine/danvine.com/iecapture/inc/global.inc.php:45) in /usr/www/users/dvine/danvine.com/iecapture/detail.html on line 37
(ну не халявный, а обычный хостинг....
а icapture пробовал?
ага.. тама регится надо...
у нах с базой косяк походу..
у нах с базой косяк походу..
значит походу просто так сделать нельзя?
Надо обязательно привлекать какую-нить шнягу...?
Надо обязательно привлекать какую-нить шнягу...?
Делаешь форк "explorer http://url.domain.arpa" и снимаешь скриншот любым стандартным методом работы с графикой.а можно об этом поподробнее...
Как сделать это в XP ?
по пунктам, если можно, а то что такое форк я незнаком...
Юзай MSDN. Ключевые слова: _spawn, _exec, system.
с мсдном у меня тоже напряг...
Если кто знает, как это делаеться просто (а упоминания о простом способе здесь были)Ю может расскажет поподробнее?
А то с факом и мсдном на неделю застряну...
Если кто знает, как это делаеться просто (а упоминания о простом способе здесь были)Ю может расскажет поподробнее?
А то с факом и мсдном на неделю застряну...
intptr_t _spawnl(
int mode,
const char *cmdname,
const char *arg0,
const char *arg1,
... const char *argn,
NULL
);
Create and execute a new process.
Parameters
mode
Execution mode for calling process
cmdname
Path of file to be executed
arg0, arg1, ... argn
List of pointers to arguments
Return Value
The return value from a synchronous _spawnl or _wspawnl (_P_WAIT specified for mode) is the exit status of the new process. The return value from an asynchronous _spawnl or _wspawnl (_P_NOWAIT or _P_NOWAITO specified for mode) is the process handle. The exit status is 0 if the process terminated normally. You can set the exit status to a nonzero value if the spawned process specifically calls the exit routine with a nonzero argument. If the new process did not explicitly set a positive exit status, a positive exit status indicates an abnormal exit with an abort or an interrupt. A return value of –1 indicates an error (the new process is not started). In this case, errno is set to one of the following values:
E2BIG
Argument list exceeds 1024 bytes
EINVAL
mode argument is invalid
ENOENT
File or path is not found
ENOEXEC
Specified file is not executable or has invalid executable-file format
ENOMEM
Not enough memory is available to execute new process
Requirements
Routine Required header Compatibility
_spawnl <process.h> Win 98, Win Me, Win NT, Win 2000, Win XP
int mode,
const char *cmdname,
const char *arg0,
const char *arg1,
... const char *argn,
NULL
);
Create and execute a new process.
Parameters
mode
Execution mode for calling process
cmdname
Path of file to be executed
arg0, arg1, ... argn
List of pointers to arguments
Return Value
The return value from a synchronous _spawnl or _wspawnl (_P_WAIT specified for mode) is the exit status of the new process. The return value from an asynchronous _spawnl or _wspawnl (_P_NOWAIT or _P_NOWAITO specified for mode) is the process handle. The exit status is 0 if the process terminated normally. You can set the exit status to a nonzero value if the spawned process specifically calls the exit routine with a nonzero argument. If the new process did not explicitly set a positive exit status, a positive exit status indicates an abnormal exit with an abort or an interrupt. A return value of –1 indicates an error (the new process is not started). In this case, errno is set to one of the following values:
E2BIG
Argument list exceeds 1024 bytes
EINVAL
mode argument is invalid
ENOENT
File or path is not found
ENOEXEC
Specified file is not executable or has invalid executable-file format
ENOMEM
Not enough memory is available to execute new process
Requirements
Routine Required header Compatibility
_spawnl <process.h> Win 98, Win Me, Win NT, Win 2000, Win XP
msdn.rambler.ru
вводи слова
вводи слова
не слушай их - они тебя плохому научат.
если тебе нужен именно скриншот (а не распечатанный html то под windows-ом - это делается так:
если тебе нужен именно скриншот (а не распечатанный html то под windows-ом - это делается так:
void OnLoad
{
axWebBrowser1.DocumentComplete += new AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(OnDocComplete);
axWebBrowser1.Navigate (url,
ref flags,
ref frame_name,
ref post_data,
ref headers);
}
void OnDocComplete (object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
{
new ScreenShot(axWebBrowser1).Bitmap.Save("q.bmp");
}
под виндой это я понял, а в какую прогу этот код вбивать?
не в командную же строку...
не в командную же строку...
в любую .Net-овскую, например, в Asp.net-овскую можно
а может это кто нить сделать
?
А то этот дотнет занимает 2 гига, а у меня места что бы его поставить нет
(
?
А то этот дотнет занимает 2 гига, а у меня места что бы его поставить нет
(это ты не путай, дот нет занимает мегов 30, писать можешь в нотепаде
ещё IIS нужен, но он тоже никак не 2 гига весит
ещё IIS нужен, но он тоже никак не 2 гига весит
вот поэтому и прошу помощи, т.к. спутал с MS .NET studio 2003
А на php мона? и у меня апач стоит...
А на php мона? и у меня апач стоит...
Лихо. А ScreenShot что?
что-то такое:
public class ScreenShot
{
public ScreenShot(Control screenControl)
{
this.screenControl = screenControl;
ResetBitmap;
}
Control screenControl;
public Control ScreenControl
{
get
{
return screenControl;
}
}
Bitmap bitmap = null;
public Bitmap Bitmap
{
get
{
return bitmap;
}
}
public void ResetBitmap
{
bitmap = new Bitmap(ScreenControl.Width + 2, ScreenControl.Height + 2);
using (Graphics g = Graphics.FromImage(bitmap
{
IntPtr dc = g.GetHdc;
try
{
SendMessage(ScreenControl.Handle, WM_PRINT, dc,
DrawingOptions.PRF_CHILDREN |
DrawingOptions.PRF_CLIENT |
DrawingOptions.PRF_NONCLIENT |
DrawingOptions.PRF_OWNED);
}
finally
{
g.ReleaseHdc(dc);
}
}
}
[Flags]
private enum DrawingOptions
{
PRF_CHECKVISIBLE = 0x00000001,
PRF_NONCLIENT = 0x00000002,
PRF_CLIENT = 0x00000004,
PRF_ERASEBKGND = 0x00000008,
PRF_CHILDREN = 0x00000010,
PRF_OWNED = 0x00000020
}
private const int WM_PRINT = 0x0317;
private const int WM_PRINTCLIENT = 0x0318;
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, int msg, IntPtr dc,
DrawingOptions opts);
}
}
Прикольно. И работает? Проверял? А как explorer на WM_PRINT реагирует?
да, работает.
explorer - это обычный ActiveX-контрол.
explorer - это обычный ActiveX-контрол.
Это я понял. Кстати, в Winforms 2.0 есть уже такой контрол. Мне вот интересно в чем отличие WM_PAINT и WM_PRINT.
а где работает?
дай ссылочку, или скинь скриптик....
дай ссылочку, или скинь скриптик....
Оставить комментарий
stm7884696
Подумал я тут, пока курить ходил, что неплохо было бы написать скриптик, которому даешь адрес урла, а он тебе в ответ картинку аля принт скрин сайта, на который ссылается урл...Вот теперь вопрос, можно ли это вообще как-нить сделать ?