<p>回调的实现如下所示</p> <pre><code>// This function uses a callback function. function doIt($callback) { $data = "this is my data"; $callback($data); } // This is a sample callback function for doIt(). function myCallback($data) { print 'Data is: ' . $data . "\n"; } // Call doIt() and pass our sample callback function's name. doIt('myCallback'); </code></pre> 如何从 C # 启动进程?

Reate _ function”rel = “ noReferrer”> create_function() 来创建一个一次性使用的匿名/lambda 函数。它对于像 array_map()preg_replace_callback()usort()这样使用回调进行自定义处理的 PHP 函数非常有用。它看起来非常像一个 eval(),但它仍然是一个很好的函数风格的 PHP 使用方式。译注:
361918 次浏览

每次在 php 中使用 create_function()时我都感到害怕。

参数是一个昏迷分离的字符串,整个函数体在一个字符串中... ... 啊... ... 我认为他们不能使它变得更难看,即使他们尝试。

可以使用 系统,诊断,处理,开始方法启动进程。您甚至可以将 URL 作为字符串传递,它将启动默认浏览器。

使用 过程类。 MSDN 文档中有一个如何使用它的示例。

”http://wiki.php.net/rfc/closures

5.3即将到来,一切都会好起来,因为5.3会得到闭包和匿名函数

Http://wiki.php.net/rfc/closures

感染。

就像马特说的,使用 过程,开始

您可以传递 URL 或文档。它们将由已注册的应用程序启动。

例如:

Process.Start("Test.Txt");

例如:

Process.Start("Test.Txt");

这将使用已加载的 Text.Txt 启动 Notepad.exe。

另一种方法是使用 Process 类的实例。这允许对进程进行更多的控制,包括调度、运行窗口的类型,以及对我来说最有用的等待进程完成的能力。

using System.Diagnostics;
...
Process process = new Process();
// Configure the process using the StartInfo properties.
process.StartInfo.FileName = "process.exe";
process.StartInfo.Arguments = "-n";
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
process.WaitForExit();// Waits here for the process to exit.

这种方法允许比我提到的更多的控制。

我在自己的程序中使用了以下内容。

Process.Start("http://www.google.com/etc/etc/test.txt")

虽然有点简单,但对我来说已经足够了。

该手册使用术语“回调”和“可调用”可以互换,但是,“回调”传统上指的是一个字符串或数组值,其作用类似于 函数指针,引用一个函数或类方法用于将来的调用。从 PHP4开始,这就允许了函数式编程的一些元素。口味如下:

$cb1 = 'someGlobalFunction';
$cb2 = ['ClassName', 'someStaticMethod'];
$cb3 = [$object, 'somePublicMethod'];


// this syntax is callable since PHP 5.2.3 but a string containing it
// cannot be called directly
$cb2 = 'ClassName::someStaticMethod';
$cb2(); // fatal error


// legacy syntax for PHP 4
$cb3 = array(&$object, 'somePublicMethod');
.Rel = “ noreference rer”> 函数指针 ,引用一个函数或类方法以供将来调用。从 PHP4开始,这就允许了函数式编程的一些元素。口味是:
$cb1 = 'someGlobalFunction';
$cb2 = ['ClassName', 'someStaticMethod'];
$cb3 = [$object, 'somePublicMethod'];


// this syntax is callable since PHP 5.2.3 but a string containing it
// cannot be called directly
$cb2 = 'ClassName::someStaticMethod';
$cb2(); // fatal error


// legacy syntax for PHP 4
$cb3 = array(&$object, 'somePublicMethod');

一般来说,这是使用可调用值的安全方法:

if (is_callable($cb2)) {
// Autoloading will be invoked to load the class "ClassName" if it's not
// yet defined, and PHP will check that the class has a method
// "someStaticMethod". Note that is_callable() will NOT verify that the
// method can safely be executed in static context.


$returnValue = call_user_func($cb2, $arg1, $arg2);
}

现代 PHP 版本允许以上前三种格式作为 $cb()直接调用。call_user_funccall_user_func_array支持以上所有内容。

一般来说,这是使用可调用值的安全方法:

if (is_callable($cb2)) {
// Autoloading will be invoked to load the class "ClassName" if it's not
// yet defined, and PHP will check that the class has a method
// "someStaticMethod". Note that is_callable() will NOT verify that the
// method can safely be executed in static context.


$returnValue = call_user_func($cb2, $arg1, $arg2);
}

见: http://php.net/manual/en/language.types.callable.php

现代 PHP 版本允许以上前三种格式作为 $cb()直接调用。call_user_funccall_user_func_array支持以上所有内容。

见: http://php.net/manual/en/language.types.callable.php

备注/警告:

    备注/警告:

    1. 如果函数/类是名称空间的,则字符串必须包含完全限定的名称
    2. 如果函数/类是名称空间的,则字符串必须包含完全限定的名称
    3. call_user_func不支持通过引用传递非对象,因此您可以使用 call_user_func_array,或者在以后的 PHP 版本中,将回调保存到 var 并使用直接语法: $cb();
    4. call_user_func不支持通过引用传递非对象,因此您可以使用 call_user_func_array,或者在以后的 PHP 版本中,将回调保存到 var 并使用直接语法: $cb();
    5. 具有 __invoke()方法(包括匿名函数)的对象属于“可调用”类别,可以以同样的方式使用,但我个人不把它们与遗留的“回调”术语关联起来。
    6. 具有 __invoke()方法(包括匿名函数)的对象属于“可调用”类别,可以以同样的方式使用,但我个人不将它们与遗留的“回调”术语关联。
    7. 遗留的 create_function()创建一个全局函数并返回其名称。它是 eval()的包装器,应该使用匿名函数。
另外,添加了回调声明,我更喜欢这种方式。

代码 >

我的问题是: 当动态 iframe 准备好而不仅仅是它的父级时,我们应该绑定哪个 jQuery 事件来执行我们的代码?

var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
Process.Start(new ProcessStartInfo(path));

我们使用 jQuery笨蛋在有人点击图片时动态显示 iframe。在这个 iframe 中,我们使用 画廊一个 javascript 库来显示多个图片。

您可以使用以下语法运行任何应用程序:

System.Diagnostics.Process.Start("Example.exe");

和同一个网址。只要写你的网址之间的这个 ()

问题似乎是 iframe 中的 $(document).ready似乎触发得太快,而且 iframe 内容甚至还没有加载,所以 galleria 代码没有正确地应用到 DOM 元素上。$(document).ready似乎使用 iframe 父级就绪状态来决定 iframe 是否就绪。

例如:

System.Diagnostics.Process.Start("http://www.google.com");

并将其放入函数中(请注意,“ checkInstallated”是可选的,但是如果要使用它,则必须实现它)

if (ckeckInstalled("example"))
{
int count = Process.GetProcessesByName("example").Count();
if (count < 1)
Process.Start("example.exe");
else
{
var proc = Process.GetProcessesByName("example").FirstOrDefault();
if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
{
SetForegroundWindow(proc.MainWindowHandle);
ShowWindowAsync(proc.MainWindowHandle, 3);
}
}
}

注意: 当. exe 的多个实例正在运行时,我不确定这是否有效。

class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();


notePad.StartInfo.FileName   = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";


notePad.Start();
}
}

我回答了一个类似的问题(见 当 IFRAME 加载完成时,是否进行 Javascript 回调?)。

例如,要启动 微软 Word,请使用以下代码:

private void button1_Click(object sender, EventArgs e)
{
string ProgramName = "winword.exe";
Process.Start(ProgramName);
}
您可以通过以下代码获得对 iframe 加载事件的控制:

function callIframe(url, callback) {
$(document.body).append('<IFRAME id="myId" ...>');
$('iframe#myId').attr('src', url);


$('iframe#myId').load(function() {
callback(this);
});
}

要了解更多解释,请查看 这个链接

激情。

找到了问题的解决办法。

Iframe,但是绑定到父文档中控件的事件。它适用于 FireFox 和 IE。

当您单击一个打开 iframe 的稠盒链接时,它会插入一个 id 为 TB _ iframe Content 的 iframe。

您可以使用以下语法:

private void button1_Click(object sender, EventArgs e)  {
System.Diagnostics.Process.Start(/*your file name goes here*/);
}

甚至是这个:

using System;
using System.Diagnostics;
//rest of the code


private void button1_Click(object sender, EventArgs e)  {
Process.Start(/*your file name goes here*/);
}

我不需要依赖 iframe 代码中的 $(document).ready事件,只需要绑定到父文档中 iframe 的 load 事件:

$('#TB_iframeContent', top.document).load(ApplyGalleria);

这两种方法将执行相同的任务。